0FFmpeg LogoThe Ultimate Codec Guide

Managing the codec system in Windows

64bit sys­tems require twice the work

Tra­di­tion­ally Win­dows was a 32bit oper­at­ing sys­tem.  How­ever, since Vista many com­puters have been sup­plied with a 64bit edi­tion of Win­dows.  When oper­at­ing on a 64bit sys­tem, 64bit codecs are required.  How­ever, this is not the end of the story.  64bit Win­dows still includes full sup­port for 32bit via emu­la­tion, and many parts of Win­dows are still 32bit.  In Win­dows 7 for example, Win­dows Media Cen­ter is 64bit (and uses the Media Play­er 64bit engine behind the scenes).  If you load Win­dows Media Play­er itself how­ever, it oper­ates as 32bit.  This fre­quently causes con­fu­sion as some­thing that works in Media Play­er may not work in Media Cen­ter or vice versa.  On 64bit sys­tems it is strongly recom­men­ded to install and con­fig­ure both 64bit and 32bit codecs where pos­sible.  On 64bit sys­tems, 64bit applic­a­tions install to the Program Files folder, and 32bit applic­a­tions install to the Program Files (x86) Folder.  Some codecs also install applic­a­tion exten­sions into the Win­dows sys­tem folders.  64bit ones will be found in the system32 folder, and 32bit ones will be found in the SysWOW64 folder.  In addi­tion to file loc­a­tions there are also extra sec­tions of the registry.  Entries related to 64bit soft­ware will be found in the nor­mal loc­a­tions (e.g. [HKEY_CURRENT_USER\Software], [HKEY_LOCAL_MACHINE\Software] and [HKEY_CLASSES_ROOT]).  Their 32bit equi­val­ents will be found in [HKEY_CURRENT_USER\Software\Wow6432Node], [HKEY_LOCAL_MACHINE\Software\Wow6432Node] and [HKEY_CLASSES_ROOT\Wow6432Node].

Asso­ci­at­ing files and streams with codecs

Win­dows uses a GUID to identi­fy fil­ters, rather than their names or file­names.  Each fil­ter has its own GUID and these are stored in the registry.   Streams are also iden­ti­fied by GUIDs (but file exten­sions are not!) Vari­ous registry set­tings can (and usu­ally do) spe­cify which split­ter to use for each file exten­sion, and in some cases (but not com­monly) which fil­ter to use for each type of stream.  When installed, each fil­ter provides a list of the GUIDs of stream types it can decode.  A fil­ter is selec­ted from the avail­able (and com­pat­ible) ones avail­able.  This selec­tion is car­ried out based on the fil­ter­’s “mer­it” (a value they are giv­en by Win­dows).  These “mer­it” val­ues can be changed to make Win­dows pick the fil­ters you want.  Sim­il­arly, the asso­ci­ation between file exten­sion and split­ter can be changed to make Win­dows pick the split­ter you want to use for each file exten­sion.  Finally, the mer­its of “ren­der­ers” can also be changed, to ensure Win­dows uses the ren­der­er you want.  This mer­it sys­tem applies to Dir­ect­Show codecs.  If there are com­pat­ible Media Found­a­tion codecs avail­able Win­dows will always prefer them.  If this is the case you may need to dis­able some or all of the Media Found­a­tion codecs.

Chan­ging Merits

The mer­its of codecs can be changed, either via the registry (which is unne­ces­sar­ily dif­fi­cult) or with vari­ous free util­it­ies.  A com­pany called mono­gram have help­fully pro­duced an improved ver­sion of a Microsoft util­ity called graphed­it.  Mono­gram Graph­Stu­dio is avail­able as both 32bit and 64bit.  When run as admin­is­trat­or, these util­it­ies can be used to change the mer­its of codecs as shown below.  How­ever, some Microsoft codecs can­not, by default, have their mer­it changed, as the admin­is­trat­or user does not have per­mis­sions to the appro­pri­ate val­ues in the registry.  This can be over­come by chan­ging the per­mis­sions to these registry paths.  If you run into prob­lems chan­ging the mer­its of any codecs, refer to the sec­tion below on tak­ing own­er­ship and chan­ging permissions.

Over-rid­ing mer­its for spe­cif­ic stream types

The mer­it sys­tem can be bypassed with spe­cif­ic asso­ci­ations between stream types and decoders.  If for example you want the ffd­show codec to decode most streams, and so set it with the highest mer­it, but want to use the mpc-hc mpeg2 decoder, you can spe­cify in the registry an asso­ci­ation between the GUID for mpeg2 video streams and the GUID for the mpc-hc decoder.  This is done by cre­at­ing a String (REG_SZ) in [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Preferred] (for 32bit codecs on 64bit Win­dows the registry path is [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectShow\Preferred]).  The name of each string should be the GUID of the stream type you want to spe­cify a codec for.  The value of the string should be the GUID of the codec you wish to use.  Make sure you include curly brack­ets { } at the start and end of each GUID.

Split­ter preferences

Split­ter pref­er­ences are best edited in the registry.   This is a fairly simple oper­a­tion to com­plete.  Each file exten­sion has a key under [HKEY_CLASSES_ROOT\Media Type\Extensions] (32bit split­ters on 64bit sys­tems will be under [HKEY_CLASSES_ROOT\Wow6432Node\Media Type\Extensions]).  In each key there should be a String Value (REG_SZ) called Source Filter.  This will be set to the GUID of the rel­ev­ant fil­ter.  You can change the GUID val­ues to change the split­ters.  You can also add new keys for oth­er file types.  The GUID val­ues for split­ters can be found in Graph­Stu­dio.  The GUIDs for the most com­mon split­ters are loc­ated in the table at the bot­tom of this article.

Media Cen­ter pre­ferred decoders & Live TV

There is anoth­er registry set­ting that tweak­ers must be aware of.  Win­dows Media Cen­ter has 2 keys which apply only to it, which over-ride mer­its and all oth­er pref­er­ences.  These keys are found in [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Decoder].  In my exper­i­ence if these are set to any oth­er codecs, Media Cen­ter can­not decode live TV.  If they are left as they are, Media Cen­ter will use these codecs to decode a lot of video files that you may not want to decode with these fil­ters.  To bypass this prob­lem, the 2 keys should be removed and the mer­its of Microsoft DTV-DVD Video Decoder and Microsoft DTV-DVD Audio Decoder should be raised to at least 00800000 (by default they are set too low for Win­dows to ever use them).  If you want to use a dif­fer­ent codec for mpeg2, simply set its mer­it high­er than 00800000 and Win­dows will use your pre­ferred codec, except for live TV, where it will recog­nise that your chosen codec is incom­pat­ible and will instead use the DTV-DVD decoders that work with liv­eTV.  Before the mer­its for the DTV-DVD decoders can be changed the per­mis­sions of the registry path that stores their set­tings must be changed.  The paths in ques­tion are [HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{212690FB-83E5-4526-8FD7-74478B7939CD}] and [HKEY_CLASSES_ROOT\CLSID\{083863F1-70DE-11D0-BD40-00A0C911CE86}\Instance\{E1F1A0B8-BEEE-490D-BA7C-066C40B5E2B9}].  To change the per­mis­sions of these paths see the sec­tion below on tak­ing own­er­ship and chan­ging permissions.

Tak­ing own­er­ship & chan­ging permissions

To com­plete some changes it is neces­sary to change the per­mis­sions of some files and some registry entries.  Before chan­ging per­mis­sions it is often also neces­sary to “take own­er­ship”.  To take own­er­ship of files right click on a file and select prop­er­ties.  Select the secur­ity tab and click on advanced.  Next, click on the own­er tab and click on edit.  Select admin­is­trat­ors in the list which appears and click ok.  Click ok twice to close the file prop­er­ties.  Then right click and re-select prop­er­ties.  And click on the secur­ity tab again.  Click the edit but­ton and select Admin­is­trat­ors and tick full-con­trol.  Click ok and ok again.

The pro­ced­ure for chan­ging per­mis­sions in the registry is sim­il­ar.  Open reged­it and browse to the key you wish to change.  Right click and select per­mis­sions and then click on Advanced.  Select the own­er tab, and click on Admin­is­trat­ors to high­light it.  If it is present, tick the box which says “Replace own­er on sub­con­tain­ers and objects” and click ok.  In the secur­ity win­dow that you have been returned to, high­light admin­is­trat­ors, and tick “Allow” to full con­trol, and finally click ok.

Dis­abling Media Found­a­tion par­tially or fully

To use Dir­ect­Show codecs to decode formats sup­por­ted by Media Found­a­tion it is neces­sary to dis­able part or all of Media Found­a­tion.  The easi­est way to do this is to use the Win7DSFilterTweaker util­ity.  You can also dis­able Media Found­a­tion manu­ally – to do this requires sev­er­al Win­dows files to be renamed or moved.  Before they can be renamed or removed you will have to take own­er­ship and change their per­mis­sions.  These files are found in the System32 folder (32bit files on 64bit sys­tems are found in the SysWOW64 folder).  To dis­able Media Found­a­tion gen­er­ally rename or move the file mfds.dll.  It is also pos­sible to dis­able spe­cif­ic Media Found­a­tion codecs.  mp3dmod.dll is the Media Found­a­tion MP3 decoder, mp4sdecd.dll and mp43decd.dll are Microsoft Mpeg4 decoders, msmpeg2adec.dll is the DTV-DVD Audio Decoder and msmpeg2vdec.dll is the DTV-DVD Video Decoder.  Do not dis­able these last 2 if you wish to view Live TV in Media Center.

What do you think? Drop us a comment below! If you would like to subscribe please use the subscribe link on the menu at the top right. You can also share this with your friends by using the social links below. Cheers.

You might also like...

Leave a Reply