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.

You might also like...

Leave a Reply