Tuesday, 26 May 2009

Skype codec selection

Ever wondered how to manually choose which codecs Skype uses when you make an audio call? Well here's how (by selecting the Skype codecs you don't want to use):
  • On Windows/Mobile you set this registry key (HKEY_LOCAL_MACHINE/SOFTWARE/Skype/Phone/Audio/DisableCodecs) to contain the codec's you don't want Skype to use (e.g. for Pocket PC you might want to disable higher CPU codecs: "ILBC G729 EG711U")
  • On Linux/OSX you add the disabled codecs inside these tags: <DisableCodecs> <\DisableCodecs> in the config.xml file (usually found in ~/.Skype/your_skype_username/config.xml). They need to be put into the (usually existing) <Call> tag which is within the <Lib> tag.
  • Furthermore you can actually force the use of a particular codec by using the <ForceCodec> tag/Reg key in the relevant place.
Skype has a wide range of codecs (e.g: SILK_WB_V3, SILK_NB_V3, ILBC, G729, EG711U, SVOPC, SILK, ISAC) which seems to get expanded every so often. Note: That disabling G729 may interfere with use of SkypeOut. Skype generally does a good job of automatically selecting the appropriate codec and its rate - unless you use this tweak - so be aware that Skype may not perform optimally when it's range of codecs is impaired.

There's also other fun stuff you can tweak - like adding a <video> section and make Skype use a particular resolution (you'll need to convert this to an appropriate Registry entry on Windows):
<captureheight>480</captureheight>
<capturewidth>640</capturewidth>

For an interesting read on Skype see columbia.edu, and for papers on performance see Politecnico di Bari and Politecnico di Torino.

[Updated: 16mar2012: More on location of Codec config tags]

3 comments:

  1. It is actually:


    ...

    ...
    ...

    ...



    Not saying where to put the tag makes it hard to guess

    ReplyDelete
  2. Good point - I've updated my blog to make it clearer for Linux/OSX

    ReplyDelete
  3. Your solution no longer works with newest versions of Skype. In my case it keeps choosing the shitty G722 even if I 'force' the use of different codec in config.xml file.

    ReplyDelete