diff --git a/sflphone-common/src/audio/codecs/Makefile.am b/sflphone-common/src/audio/codecs/Makefile.am
index 93ea6e260db5e545b45c86861901f42fccf8a890..49e3960df755b5ba55682270eb0148088a3cb8d2 100644
--- a/sflphone-common/src/audio/codecs/Makefile.am
+++ b/sflphone-common/src/audio/codecs/Makefile.am
@@ -2,7 +2,7 @@ include $(top_srcdir)/globals.mak
 
 noinst_LTLIBRARIES = libcodecdescriptor.la
 
-libcodecdescriptor_la_SOURCES = codecDescriptor.cpp audiocodec.cpp
+libcodecdescriptor_la_SOURCES = audiocodecfactory.cpp audiocodec.cpp
 
 if BUILD_GSM
 GSM_LIB = libcodec_gsm.so
@@ -66,7 +66,7 @@ endif
 
 noinst_PROGRAMS = libcodec_ulaw.so libcodec_alaw.so libcodec_g722.so $(GSM_LIB) $(SPEEX_NB_LIB) $(SPEEX_WB_LIB) $(SPEEX_UB_LIB) $(CELT_LIB)
 
-noinst_HEADERS = audiocodec.h codecDescriptor.h
+noinst_HEADERS = audiocodec.h audiocodecfactory.h
 
 libcodec_ulaw_so_SOURCES = ulaw.cpp
 libcodec_ulaw_so_CFLAGS = -fPIC -g -Wall
diff --git a/sflphone-common/src/audio/codecs/codecDescriptor.cpp b/sflphone-common/src/audio/codecs/audiocodecfactory.cpp
similarity index 88%
rename from sflphone-common/src/audio/codecs/codecDescriptor.cpp
rename to sflphone-common/src/audio/codecs/audiocodecfactory.cpp
index a88f38d33ce36c6a8d0db24c85cb394b7bff3b96..bd8717b6ad0e82f35f08bf97422181259739d927 100644
--- a/sflphone-common/src/audio/codecs/codecDescriptor.cpp
+++ b/sflphone-common/src/audio/codecs/audiocodecfactory.cpp
@@ -34,14 +34,14 @@
 #include <iostream>
 #include <cstdlib>
 
-#include "codecDescriptor.h"
+#include "audiocodecfactory.h"
 
 
-CodecFactory::CodecFactory() : _CodecsMap(), _defaultCodecOrder(), _Cache(), _nbCodecs(), _CodecInMemory()
+AudioCodecFactory::AudioCodecFactory() : _CodecsMap(), _defaultCodecOrder(), _Cache(), _nbCodecs(), _CodecInMemory()
 {
 }
 
-CodecFactory::~CodecFactory()
+AudioCodecFactory::~AudioCodecFactory()
 {
 
 }
@@ -60,7 +60,7 @@ CodecFactory::~CodecFactory()
 
 
 void
-CodecFactory::init()
+AudioCodecFactory::init()
 {
     std::vector<sfl::Codec*> CodecDynamicList = scanCodecDirectory();
     _nbCodecs = CodecDynamicList.size();
@@ -78,7 +78,7 @@ CodecFactory::init()
     }
 }
 
-void CodecFactory::setDefaultOrder()
+void AudioCodecFactory::setDefaultOrder()
 {
 
     _defaultCodecOrder.clear();
@@ -92,7 +92,7 @@ void CodecFactory::setDefaultOrder()
 }
 
 std::string
-CodecFactory::getCodecName (AudioCodecType payload)
+AudioCodecFactory::getCodecName (AudioCodecType payload)
 {
     std::string resNull = "";
     CodecsMap::iterator iter = _CodecsMap.find (payload);
@@ -105,7 +105,7 @@ CodecFactory::getCodecName (AudioCodecType payload)
 }
 
 sfl::Codec*
-CodecFactory::getCodec (AudioCodecType payload)
+AudioCodecFactory::getCodec (AudioCodecType payload)
 {
     CodecsMap::iterator iter = _CodecsMap.find (payload);
 
@@ -118,7 +118,7 @@ CodecFactory::getCodec (AudioCodecType payload)
     return NULL;
 }
 
-double CodecFactory::getBitRate (AudioCodecType payload)
+double AudioCodecFactory::getBitRate (AudioCodecType payload)
 {
 
     CodecsMap::iterator iter = _CodecsMap.find (payload);
@@ -129,7 +129,7 @@ double CodecFactory::getBitRate (AudioCodecType payload)
         return 0.0;
 }
 
-double CodecFactory::getBandwidthPerCall (AudioCodecType payload)
+double AudioCodecFactory::getBandwidthPerCall (AudioCodecType payload)
 {
 
     CodecsMap::iterator iter = _CodecsMap.find (payload);
@@ -140,7 +140,7 @@ double CodecFactory::getBandwidthPerCall (AudioCodecType payload)
         return 0.0;
 }
 
-int CodecFactory::getSampleRate (AudioCodecType payload)
+int AudioCodecFactory::getSampleRate (AudioCodecType payload)
 {
 
     CodecsMap::iterator iter = _CodecsMap.find (payload);
@@ -151,7 +151,7 @@ int CodecFactory::getSampleRate (AudioCodecType payload)
         return 0;
 }
 
-void CodecFactory::saveActiveCodecs (const std::vector<std::string>& list)
+void AudioCodecFactory::saveActiveCodecs (const std::vector<std::string>& list)
 {
 
     _defaultCodecOrder.clear();
@@ -174,7 +174,7 @@ void CodecFactory::saveActiveCodecs (const std::vector<std::string>& list)
 }
 
 void
-CodecFactory::deleteHandlePointer (void)
+AudioCodecFactory::deleteHandlePointer (void)
 {
     _debug ("CodecDesccriptor: Delete codec handle pointers");
 
@@ -185,7 +185,7 @@ CodecFactory::deleteHandlePointer (void)
     _CodecInMemory.clear();
 }
 
-std::vector<sfl::Codec*> CodecFactory::scanCodecDirectory (void)
+std::vector<sfl::Codec*> AudioCodecFactory::scanCodecDirectory (void)
 {
 
     std::vector<sfl::Codec*> codecs;
@@ -226,7 +226,7 @@ std::vector<sfl::Codec*> CodecFactory::scanCodecDirectory (void)
     return codecs;
 }
 
-sfl::Codec* CodecFactory::loadCodec (std::string path)
+sfl::Codec* AudioCodecFactory::loadCodec (std::string path)
 {
 
     CodecHandlePointer p;
@@ -253,7 +253,7 @@ sfl::Codec* CodecFactory::loadCodec (std::string path)
 }
 
 
-void CodecFactory::unloadCodec (CodecHandlePointer p)
+void AudioCodecFactory::unloadCodec (CodecHandlePointer p)
 {
 
     using std::cerr;
@@ -267,7 +267,7 @@ void CodecFactory::unloadCodec (CodecHandlePointer p)
     dlclose (p.second);
 }
 
-sfl::Codec* CodecFactory::instantiateCodec (AudioCodecType payload)
+sfl::Codec* AudioCodecFactory::instantiateCodec (AudioCodecType payload)
 {
 
     using std::cerr;
@@ -294,7 +294,7 @@ sfl::Codec* CodecFactory::instantiateCodec (AudioCodecType payload)
 
 
 
-sfl::Codec* CodecFactory::getFirstCodecAvailable (void)
+sfl::Codec* AudioCodecFactory::getFirstCodecAvailable (void)
 {
 
     CodecsMap::iterator iter = _CodecsMap.begin();
@@ -305,7 +305,7 @@ sfl::Codec* CodecFactory::getFirstCodecAvailable (void)
         return NULL;
 }
 
-bool CodecFactory::seemsValid (std::string lib)
+bool AudioCodecFactory::seemsValid (std::string lib)
 {
 
     // The name of the shared library seems valid  <==> it looks like libcodec_xxx.so
@@ -362,7 +362,7 @@ bool CodecFactory::seemsValid (std::string lib)
 }
 
 bool
-CodecFactory::alreadyInCache (std::string lib)
+AudioCodecFactory::alreadyInCache (std::string lib)
 {
     int i;
 
@@ -375,7 +375,7 @@ CodecFactory::alreadyInCache (std::string lib)
     return false;
 }
 
-bool CodecFactory::isCodecLoaded (int payload)
+bool AudioCodecFactory::isCodecLoaded (int payload)
 {
 
     CodecsMap::iterator iter = _CodecsMap.begin();
@@ -390,7 +390,7 @@ bool CodecFactory::isCodecLoaded (int payload)
     return false;
 }
 
-std::vector <std::string> CodecFactory::getCodecSpecifications (const int32_t& payload)
+std::vector <std::string> AudioCodecFactory::getCodecSpecifications (const int32_t& payload)
 {
 
     _debug ("CodecDescriptor: Gathering codec specifications for payload %i", payload);
diff --git a/sflphone-common/src/audio/codecs/codecDescriptor.h b/sflphone-common/src/audio/codecs/audiocodecfactory.h
similarity index 99%
rename from sflphone-common/src/audio/codecs/codecDescriptor.h
rename to sflphone-common/src/audio/codecs/audiocodecfactory.h
index c791bcc61c59787ef063750ef161a1ca8683bb3e..9ea2511f93256efcfa28625f9f919c3bb591af40 100644
--- a/sflphone-common/src/audio/codecs/codecDescriptor.h
+++ b/sflphone-common/src/audio/codecs/audiocodecfactory.h
@@ -53,18 +53,18 @@ typedef std::map<AudioCodecType, std::string> CodecMap;
  * @brief Handle audio codecs, load them in memory
  */
 
-class CodecFactory
+class AudioCodecFactory
 {
     public:
         /**
          * Constructor
          */
-        CodecFactory();
+        AudioCodecFactory();
 
         /**
          * Destructor
          */
-        ~CodecFactory();
+        ~AudioCodecFactory();
 
         /**
          * Accessor to data structures
diff --git a/sflphone-common/src/audio/sound/audiofile.cpp b/sflphone-common/src/audio/sound/audiofile.cpp
index b1ae79afb0c37ea9a18aae3c2c045d1fc37a0fca..101cc56e3a53e67cbbe42c3b6e080bde3473f3f0 100644
--- a/sflphone-common/src/audio/sound/audiofile.cpp
+++ b/sflphone-common/src/audio/sound/audiofile.cpp
@@ -38,7 +38,7 @@
 #include <limits.h>
 
 #include "audiofile.h"
-#include "audio/codecs/codecDescriptor.h"
+#include "audio/codecs/audiocodecfactory.h"
 #include "audio/samplerateconverter.h"
 
 #include "manager.h"
diff --git a/sflphone-common/src/audio/sound/audiofile.h b/sflphone-common/src/audio/sound/audiofile.h
index 46734fe2ca3eb0206ce635f429c868ec2cd92ed4..857de3aaf5d93aaec44a1f2091ec3fae65766a76 100644
--- a/sflphone-common/src/audio/sound/audiofile.h
+++ b/sflphone-common/src/audio/sound/audiofile.h
@@ -38,7 +38,7 @@
 
 #include "audio/audioloop.h"
 #include "audio/codecs/audiocodec.h"
-#include "audio/codecs/codecDescriptor.h"
+#include "audio/codecs/audiocodecfactory.h"
 
 
 /**
diff --git a/sflphone-common/src/dbus/configurationmanager.cpp b/sflphone-common/src/dbus/configurationmanager.cpp
index 3b01b52b3e912f0376c9065fc385462992c4d33a..748cf8e56b27fbc75460272815fdf820b32d9891 100644
--- a/sflphone-common/src/dbus/configurationmanager.cpp
+++ b/sflphone-common/src/dbus/configurationmanager.cpp
@@ -411,7 +411,7 @@ std::vector<std::string> ConfigurationManager::getAudioCodecList (void)
 
     std::vector<std::string> list;
 
-    CodecsMap codecs = Manager::instance().getCodecDescriptorMap().getCodecsMap();
+    CodecsMap codecs = Manager::instance().getAudioCodecFactory().getCodecsMap();
     CodecsMap::iterator iter = codecs.begin();
 
     while (iter != codecs.end()) {
@@ -443,7 +443,7 @@ std::vector<std::string> ConfigurationManager::getAudioCodecDetails (
     const int32_t& payload)
 {
 
-    return Manager::instance().getCodecDescriptorMap().getCodecSpecifications (
+    return Manager::instance().getAudioCodecFactory().getCodecSpecifications (
                payload);
 }
 
diff --git a/sflphone-common/src/iax/iaxcall.cpp b/sflphone-common/src/iax/iaxcall.cpp
index 0703722559cf9c933008c69773fea44566d020cd..01c2189aa5e412f3e1b6751167c5bff7796f7afc 100644
--- a/sflphone-common/src/iax/iaxcall.cpp
+++ b/sflphone-common/src/iax/iaxcall.cpp
@@ -198,9 +198,9 @@ int IAXCall::getFirstMatchingFormat (int needles, std::string accountID)
     return 0;
 }
 
-CodecFactory& IAXCall::getCodecMap()
+AudioCodecFactory& IAXCall::getAudioCodecFactory()
 {
-    return _codecMap;
+    return _audioCodecFactory;
 }
 
 AudioCodecType IAXCall::getAudioCodec()
diff --git a/sflphone-common/src/iax/iaxcall.h b/sflphone-common/src/iax/iaxcall.h
index a7b237ad5a56309a684ec1a6781f5af53328391f..7d5ca4fbbdd8c492b6d56f2ebf3e2bc47efc9ac8 100644
--- a/sflphone-common/src/iax/iaxcall.h
+++ b/sflphone-common/src/iax/iaxcall.h
@@ -32,7 +32,7 @@
 #define IAXCALL_H
 
 #include "call.h"
-#include "audio/codecs/codecDescriptor.h"
+#include "audio/codecs/audiocodecfactory.h"
 
 #include <iax-client.h>
 #include <frame.h>
@@ -114,15 +114,15 @@ class IAXCall : public Call
          * Set internal codec Map: initialization only, not protected
          * @param map The codec map
          */
-        void setCodecMap (const CodecFactory& map) {
-            _codecMap = map;
+        void setCodecMap (const AudioCodecFactory& factory) {
+            _audioCodecFactory = factory;
         }
 
         /**
          * Get internal codec Map: initialization only, not protected
          * @return CodecDescriptor	The codec map
          */
-        CodecFactory& getCodecMap();
+        AudioCodecFactory& getAudioCodecFactory();
 
         /**
          * Return audio codec [mutex protected]
@@ -143,7 +143,7 @@ class IAXCall : public Call
         }
 
         /** Codec Map */
-        CodecFactory _codecMap;
+        AudioCodecFactory _audioCodecFactory;
 
         /** Codec pointer */
         AudioCodecType _audioCodec;
diff --git a/sflphone-common/src/iax/iaxvoiplink.cpp b/sflphone-common/src/iax/iaxvoiplink.cpp
index 08f511dd232e19db93101fd8c58cddba74deb761..47a73c936d04f3365c156dbdc5255a29918d6b63 100644
--- a/sflphone-common/src/iax/iaxvoiplink.cpp
+++ b/sflphone-common/src/iax/iaxvoiplink.cpp
@@ -264,7 +264,6 @@ IAXVoIPLink::getEvent()
         if (call) {
             // We know that call, deal with it
             iaxHandleCallEvent (event, call);
-            //_audiocodec = Manager::instance().getCodecDescriptorMap().getCodec( call -> getAudioCodec() );
         } else if (event->session && event->session == _regSession) {
             // This is a registration session, deal with it
             iaxHandleRegReply (event);
@@ -303,7 +302,7 @@ IAXVoIPLink::sendAudioFromMic (void)
 {
 
     int maxBytesToGet, availBytesFromMic, bytesAvail, compSize;
-    AudioCodec *ac;
+    AudioCodec *audioCodec = NULL;
     IAXCall *currentCall;
 
     // We have to update the audio layer type in case we switched
@@ -330,16 +329,17 @@ IAXVoIPLink::sendAudioFromMic (void)
 
             if (callIsActive) {
 
-                ac = static_cast<AudioCodec *>(currentCall->getCodecMap().getCodec (currentCall->getAudioCodec()));
+		AudioCodecType codecType = currentCall->getAudioCodec();
+                audioCodec = static_cast<AudioCodec *>(currentCall->getAudioCodecFactory().getCodec (codecType));
 
                 // Send sound here
 
-                if (ac && audiolayer) {
+                if (audioCodec && audiolayer) {
 
                     // _debug("Send sound");
                     // audiolayer->getMainBuffer()->flush(currentCall->getCallId());
 
-                    Manager::instance().getMainBuffer()->setInternalSamplingRate (ac->getClockRate());
+                    Manager::instance().getMainBuffer()->setInternalSamplingRate (audioCodec->getClockRate());
 
                     int _mainBufferSampleRate = audiolayer->getMainBuffer()->getInternalSamplingRate();
 
@@ -364,18 +364,18 @@ IAXVoIPLink::sendAudioFromMic (void)
                         nbSampleForRec_ = nbSample_;
 
 
-                        if (ac->getClockRate() && ((int) ac->getClockRate() != _mainBufferSampleRate)) {
+                        if (audioCodec->getClockRate() && ((int) audioCodec->getClockRate() != _mainBufferSampleRate)) {
 
                             // resample
-                            nbSample_ = converter->downsampleData (micData , micDataConverted , (int) ac->getClockRate(), _mainBufferSampleRate, nbSample_);
+                            nbSample_ = converter->downsampleData (micData , micDataConverted , (int) audioCodec->getClockRate(), _mainBufferSampleRate, nbSample_);
 
                             // for the mono: range = 0 to IAX_FRAME2SEND * sizeof(int16)
-                            compSize = ac->encode (micDataEncoded, micDataConverted , nbSample_*sizeof (int16));
+                            compSize = audioCodec->encode (micDataEncoded, micDataConverted , nbSample_*sizeof (int16));
 
                         } else {
 
                             // for the mono: range = 0 to IAX_FRAME2SEND * sizeof(int16)
-                            compSize = ac->encode (micDataEncoded, micData, nbSample_*sizeof (int16));
+                            compSize = audioCodec->encode (micDataEncoded, micData, nbSample_*sizeof (int16));
 
                         }
 
@@ -492,7 +492,7 @@ Call*
 IAXVoIPLink::newOutgoingCall (const CallID& id, const std::string& toUrl) throw(VoipLinkException)
 {
     IAXCall* call = new IAXCall (id, Call::Outgoing);
-    call->setCodecMap (Manager::instance().getCodecDescriptorMap());
+    call->setCodecMap (Manager::instance().getAudioCodecFactory());
 
     if (call) {
         call->setPeerNumber (toUrl);
@@ -516,7 +516,7 @@ bool
 IAXVoIPLink::answer (const CallID& id) throw (VoipLinkException)
 {
     IAXCall* call = getIAXCall (id);
-    call->setCodecMap (Manager::instance().getCodecDescriptorMap());
+    call->setCodecMap (Manager::instance().getAudioCodecFactory());
 
     Manager::instance().addStream (call->getCallId());
 
@@ -708,16 +708,25 @@ std::string
 IAXVoIPLink::getCurrentCodecName(const CallID& /*id*/)
 {
     IAXCall *call = NULL;
-    AudioCodec *ac = NULL;
+    AudioCodec *audioCodec = NULL;
     std::string name = "";
 
     call = getIAXCall (Manager::instance().getCurrentCallId());
 
-    if (call)
-        ac = static_cast<AudioCodec *>(call->getCodecMap().getCodec (call->getAudioCodec()));
+    if(call == NULL) {
+	_error("IAX: Error: Could not load call");
+	return "";
+    }
 
-    if (ac)
-        name = ac->getMimeSubtype();
+    AudioCodecType audioCodecType = call->getAudioCodec();
+    audioCodec= static_cast<AudioCodec *>(call->getAudioCodecFactory().getCodec (audioCodecType));
+
+    if(audioCodec == NULL) {
+        _error("IAX: Error: Could not load audio codec");
+        return "";
+    }
+
+    name = audioCodec->getMimeSubtype();
 
     return name;
 }
@@ -966,10 +975,11 @@ IAXVoIPLink::iaxHandleVoiceEvent (iax_event* event, IAXCall* call)
     unsigned char *data;
     unsigned int size, max, nbInt16;
     int expandedSize, nbSample_;
-    AudioCodec *ac;
+    AudioCodec *audioCodec;
 
-    if (!call)
+    if (!call) {
         return;
+    }
 
     if (!event->datalen) {
         // Skip this empty packet.
@@ -977,14 +987,15 @@ IAXVoIPLink::iaxHandleVoiceEvent (iax_event* event, IAXCall* call)
         return;
     }
 
-    ac = static_cast<AudioCodec *>(call->getCodecMap ().getCodec (call->getAudioCodec ()));
+    AudioCodecType audioCodecType = call->getAudioCodec();
+    audioCodec = static_cast<AudioCodec *>(call->getAudioCodecFactory().getCodec (audioCodecType));
 
-    if (!ac)
+    if (!audioCodec)
         return;
 
     if (audiolayer) {
 
-        Manager::instance().getMainBuffer ()->setInternalSamplingRate (ac->getClockRate ());
+        Manager::instance().getMainBuffer ()->setInternalSamplingRate (audioCodec->getClockRate ());
 
         // If we receive datalen == 0, some things of the jitter buffer in libiax2/iax.c
         // were triggered
@@ -1000,22 +1011,19 @@ IAXVoIPLink::iaxHandleVoiceEvent (iax_event* event, IAXCall* call)
             call->setFormat (event->subclass);
         }
 
-        //_debug("Receive: len=%d, format=%d, _receiveDataDecoded=%p", event->datalen, call->getFormat(), _receiveDataDecoded);
-        // ac = call->getCodecMap().getCodec (call -> getAudioCodec());
-
         data = (unsigned char*) event->data;
 
         size   = event->datalen;
 
         // Decode data with relevant codec
-        max = (int) (ac->getClockRate() * audiolayer->getFrameSize() / 1000);
+        max = (int) (audioCodec->getClockRate() * audiolayer->getFrameSize() / 1000);
 
         if (size > max) {
             _debug ("The size %d is bigger than expected %d. Packet cropped. Ouch!", size, max);
             size = max;
         }
 
-        expandedSize = ac->decode (spkrDataDecoded , data , size);
+        expandedSize = audioCodec->decode (spkrDataDecoded , data , size);
 
         nbInt16      = expandedSize/sizeof (int16);
 
@@ -1028,10 +1036,10 @@ IAXVoIPLink::iaxHandleVoiceEvent (iax_event* event, IAXCall* call)
 
         // test if resampling is required
 
-        if (ac->getClockRate() && ((int) ac->getClockRate() != _mainBufferSampleRate)) {
+        if (audioCodec->getClockRate() && ((int) audioCodec->getClockRate() != _mainBufferSampleRate)) {
 
             // resample
-            nbInt16 = converter->upsampleData (spkrDataDecoded, spkrDataConverted, ac->getClockRate(), _mainBufferSampleRate, nbSample_);
+            nbInt16 = converter->upsampleData (spkrDataDecoded, spkrDataConverted, audioCodec->getClockRate(), _mainBufferSampleRate, nbSample_);
 
             /* Write the data to the mic ring buffer */
             audiolayer->getMainBuffer()->putData (spkrDataConverted, nbInt16 * sizeof (SFLDataFormat), 100, call->getCallId());
@@ -1156,7 +1164,7 @@ IAXVoIPLink::iaxHandlePrecallEvent (iax_event* event)
             call->setSession (event->session);
 
             // setCallAudioLocal(call);
-            call->setCodecMap (Manager::instance().getCodecDescriptorMap());
+            call->setCodecMap (Manager::instance().getAudioCodecFactory());
 
             call->setConnectionState (Call::Progressing);
 
diff --git a/sflphone-common/src/iax/iaxvoiplink.h b/sflphone-common/src/iax/iaxvoiplink.h
index 528001e556411603724295bc7725c59f7a4f756e..666e2d90d4092548a523a1a194d9a7e0539c5cbf 100644
--- a/sflphone-common/src/iax/iaxvoiplink.h
+++ b/sflphone-common/src/iax/iaxvoiplink.h
@@ -36,7 +36,7 @@
 #include <iax-client.h>
 #include "global.h"
 
-#include "audio/codecs/codecDescriptor.h"
+#include "audio/codecs/audiocodecfactory.h"
 #include "audio/samplerateconverter.h"
 #include "hooks/urlhook.h"
 
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 0facee4b3b84b3c7b837bc480b2c8d681a7c6d5c..84fc65dc922611b65729d549acdecb5383ad61c5 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -76,8 +76,8 @@
 
 ManagerImpl::ManagerImpl (void) :
     _hasTriedToRegister (false), _config(), _currentCallId2(),
-    _currentCallMutex(), _codecBuilder (NULL), _audiodriver (NULL),
-    _dtmfKey (NULL), _codecDescriptorMap(), _toneMutex(),
+    _currentCallMutex(), _audiodriver (NULL),
+    _dtmfKey (NULL), _audioCodecFactory(), _toneMutex(),
     _telephoneTone (NULL), _audiofile (NULL), _spkr_volume (0),
     _mic_volume (0), _mutex(), _dbus (NULL), _waitingCall(),
     _waitingCallMutex(), _nbIncomingWaitingCall (0), _path (""),
@@ -203,7 +203,7 @@ void ManagerImpl::terminate ()
     _telephoneTone = NULL;
 
     _debug ("Manager: Unload audio codecs ");
-    _codecDescriptorMap.deleteHandlePointer();
+    _audioCodecFactory.deleteHandlePointer();
 
 }
 
@@ -2344,7 +2344,7 @@ void ManagerImpl::ringtone (const AccountID& accountID)
         layer = _audiodriver->getLayerType();
 
         samplerate = _audiodriver->getSampleRate();
-        codecForTone = static_cast<AudioCodec *>(_codecDescriptorMap.getFirstCodecAvailable());
+        codecForTone = static_cast<AudioCodec *>(_audioCodecFactory.getFirstCodecAvailable());
 
         audioLayerMutexUnlock();
 
@@ -2592,7 +2592,7 @@ void ManagerImpl::initAudioCodec (void)
     /* Init list of all supported codecs by the application.
      * This is a global list. Every account will inherit it.
      */
-    _codecDescriptorMap.init();
+    _audioCodecFactory.init();
 }
 
 std::vector<std::string> ManagerImpl::unserialize (std::string s)
diff --git a/sflphone-common/src/managerimpl.h b/sflphone-common/src/managerimpl.h
index ef03c1bcd5d358cc529f5a4266fcd24aceb33c5f..d6e02efc30304965fa26b3d3fb829ab273e6a679 100644
--- a/sflphone-common/src/managerimpl.h
+++ b/sflphone-common/src/managerimpl.h
@@ -53,7 +53,7 @@
 #include "audio/sound/tonelist.h"  // for Tone::TONEID declaration
 #include "audio/sound/audiofile.h"
 #include "audio/sound/dtmf.h" // DTMF class contained by value here
-#include "audio/codecs/codecDescriptor.h" // CodecDescriptor class contained by value here
+#include "audio/codecs/audiocodecfactory.h" 
 
 #include "audio/mainbuffer.h"
 #include "yamlemitter.h"
@@ -186,8 +186,8 @@ class ManagerImpl
          * Get a descriptor map of codec available
          * @return CodecDescriptor  The internal codec map
          */
-        CodecFactory& getCodecDescriptorMap (void) {
-            return _codecDescriptorMap;
+        AudioCodecFactory& getAudioCodecFactory (void) {
+            return _audioCodecFactory;
         }
 
         /**
@@ -1221,9 +1221,6 @@ class ManagerImpl
         /** Protected current call access */
         ost::Mutex _currentCallMutex;
 
-        /** Vector of CodecDescriptor */
-        CodecFactory* _codecBuilder;
-
         /** Audio layer */
         AudioLayer* _audiodriver;
 
@@ -1232,7 +1229,7 @@ class ManagerImpl
         DTMF* _dtmfKey;
 
         // map of codec (for configlist request)
-        CodecFactory _codecDescriptorMap;
+        AudioCodecFactory _audioCodecFactory;
 
         /////////////////////
         // Protected by Mutex
diff --git a/sflphone-common/src/sip/sdp.cpp b/sflphone-common/src/sip/sdp.cpp
index 797aea0f3625317162298a00825f53781cc8bfc0..affb01d96510cf080d63ac8933b18f9a6f3688a6 100644
--- a/sflphone-common/src/sip/sdp.cpp
+++ b/sflphone-common/src/sip/sdp.cpp
@@ -88,7 +88,7 @@ void Sdp::setActiveLocalSdpSession (const pjmedia_sdp_session *sdp)
 
     activeLocalSession = (pjmedia_sdp_session*) sdp;
 
-    codecs_list = Manager::instance().getCodecDescriptorMap().getCodecsMap();
+    codecs_list = Manager::instance().getAudioCodecFactory().getCodecsMap();
 
     // retrieve the media information
     nb_media = activeLocalSession->media_count;
@@ -296,7 +296,7 @@ void Sdp::setLocalMediaCapabilities (CodecOrder selectedCodecs)
     audio->set_port (getLocalPublishedAudioPort());
 
     /* We retrieve the codecs selected by the user */
-    codecs_list = Manager::instance().getCodecDescriptorMap().getCodecsMap();
+    codecs_list = Manager::instance().getAudioCodecFactory().getCodecsMap();
 
     if (selectedCodecs.size() == 0) {
         throw SdpException ("No selected codec while building local SDP offer");
diff --git a/sflphone-common/src/sip/sdp.h b/sflphone-common/src/sip/sdp.h
index 250a7c7088a528a00bc0568f6055c8f8e0f0dd44..4afeda51ef716fa2bdd6807f92a28fb002b857bc 100644
--- a/sflphone-common/src/sip/sdp.h
+++ b/sflphone-common/src/sip/sdp.h
@@ -42,7 +42,7 @@
 #include <pj/assert.h>
 #include <vector>
 
-#include "audio/codecs/codecDescriptor.h"
+#include "audio/codecs/audiocodecfactory.h"
 #include "sdpmedia.h"
 
 #include <exception>
diff --git a/sflphone-common/src/sip/sdpmedia.h b/sflphone-common/src/sip/sdpmedia.h
index 767f56077d3b71b60b285150e331643cea2ff1e1..0b6f99b58965bb90004ad0648a412a08741b0fde 100644
--- a/sflphone-common/src/sip/sdpmedia.h
+++ b/sflphone-common/src/sip/sdpmedia.h
@@ -33,7 +33,7 @@
 
 #include <vector>
 
-#include "audio/codecs/codecDescriptor.h"
+#include "audio/codecs/audiocodecfactory.h"
 
 #define DEFAULT_STREAM_DIRECTION    "sendrecv"
 
diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp
index a12edf9d16423d52ec8e97f36a7a92bd91c5f57d..98a8befca3deabd5c825f22d1308d668aaced742 100644
--- a/sflphone-common/src/sip/sipvoiplink.cpp
+++ b/sflphone-common/src/sip/sipvoiplink.cpp
@@ -701,7 +701,7 @@ Call *SIPVoIPLink::newOutgoingCall (const CallID& id, const std::string& toUrl)
     // Initialize the session using ULAW as default codec in case of early media
     // The session should be ready to receive media once the first INVITE is sent, before
     // the session initialization is completed
-    sfl::Codec* audiocodec = Manager::instance().getCodecDescriptorMap().instantiateCodec (PAYLOAD_CODEC_ULAW);
+    sfl::Codec* audiocodec = Manager::instance().getAudioCodecFactory().instantiateCodec (PAYLOAD_CODEC_ULAW);
     if (audiocodec == NULL) {
     	_error ("UserAgent: Could not instantiate codec");
     	delete call;
@@ -1011,7 +1011,7 @@ SIPVoIPLink::offhold (const CallID& id) throw (VoipLinkException)
 
 
         // Create a new instance for this codec
-        sfl::Codec* audiocodec = Manager::instance().getCodecDescriptorMap().instantiateCodec (pl);
+        sfl::Codec* audiocodec = Manager::instance().getAudioCodecFactory().instantiateCodec (pl);
         if (audiocodec == NULL) {
     	    throw VoipLinkException("Could not instantiate codec");
         }
@@ -1785,7 +1785,7 @@ bool SIPVoIPLink::SIPNewIpToIpCall (const CallID& id, const std::string& to)
 
         _debug ("UserAgent: TO uri for IP2IP call: %s", toUri.c_str());
 
-        sfl::Codec* audiocodec = Manager::instance().getCodecDescriptorMap().instantiateCodec (PAYLOAD_CODEC_ULAW);
+        sfl::Codec* audiocodec = Manager::instance().getAudioCodecFactory().instantiateCodec (PAYLOAD_CODEC_ULAW);
 
         // Audio Rtp Session must be initialized before creating initial offer in SDP session
         // since SDES require crypto attribute.
@@ -3525,7 +3525,7 @@ void sdp_media_update_cb (pjsip_inv_session *inv, pj_status_t status)
 
         // udate session media only if required
         if (pl != call->getAudioRtp()->getSessionMedia()) {
-            sfl::Codec* audiocodec = Manager::instance().getCodecDescriptorMap().instantiateCodec (pl);
+            sfl::Codec* audiocodec = Manager::instance().getAudioCodecFactory().instantiateCodec (pl);
 
             if (audiocodec == NULL)
                 _error ("UserAgent: No audiocodec found");
@@ -4047,7 +4047,7 @@ transaction_request_cb (pjsip_rx_data *rdata)
     }
 
     // Init default codec for early media session
-    sfl::Codec* audiocodec = Manager::instance().getCodecDescriptorMap().instantiateCodec (PAYLOAD_CODEC_ULAW);
+    sfl::Codec* audiocodec = Manager::instance().getAudioCodecFactory().instantiateCodec (PAYLOAD_CODEC_ULAW);
 
     // Init audio rtp session
     try {