diff --git a/sflphone-common/src/audio/codecs/alaw.cpp b/sflphone-common/src/audio/codecs/alaw.cpp
index 44741d0f1df7cba721605c51c4206d238d73c4bb..f6826269eb889e1eba80029390dc86f6ce329d3a 100644
--- a/sflphone-common/src/audio/codecs/alaw.cpp
+++ b/sflphone-common/src/audio/codecs/alaw.cpp
@@ -32,13 +32,13 @@
 #include "../common.h"
 #include "audiocodec.h"
 
-class Alaw : public AudioCodec
+class Alaw : public sfl::AudioCodec
 {
 
     public:
         // 8 PCMA A 8000 1 [RFC3551]
         Alaw (int payload=8)
-            : AudioCodec (payload, "PCMA") {
+            : sfl::AudioCodec (payload, "PCMA") {
             _clockRate = 8000;
             _frameSize = 160; // samples, 20 ms at 8kHz
             _channel   = 1;
diff --git a/sflphone-common/src/audio/codecs/audiocodec.cpp b/sflphone-common/src/audio/codecs/audiocodec.cpp
index 05db9abda7c33aea36924f0ae148b5cfacd72094..df7a692419b025193a03bb9a5bf0c245d62dcd60 100644
--- a/sflphone-common/src/audio/codecs/audiocodec.cpp
+++ b/sflphone-common/src/audio/codecs/audiocodec.cpp
@@ -32,6 +32,8 @@
 
 #include "audiocodec.h"
 
+namespace sfl {
+
 AudioCodec::AudioCodec (uint8 payload, const std::string &codecName) :
         _codecName (codecName), _clockRate (8000), _channel (1), _bitrate (0.0),
         _bandwidth (0), _hasDynamicPayload (false), _payload(payload)
@@ -110,3 +112,5 @@ double AudioCodec::getBandwidth (void) const
 {
     return _bandwidth;
 }
+
+} // end namespace sfl
diff --git a/sflphone-common/src/audio/codecs/audiocodec.h b/sflphone-common/src/audio/codecs/audiocodec.h
index 44b630a939e190db4725b1fc4d3fd31e783b6271..20558f0527127525c1a223cfbc272eafa5052fb9 100644
--- a/sflphone-common/src/audio/codecs/audiocodec.h
+++ b/sflphone-common/src/audio/codecs/audiocodec.h
@@ -38,7 +38,9 @@
 
 #include "Codec.h"
 
-class AudioCodec : public sfl::Codec   // TODO Move into the "sfl" namespace
+namespace sfl {
+
+class AudioCodec : public Codec
 {
     public:
         AudioCodec (uint8 payload, const std::string &codecName);
@@ -187,5 +189,6 @@ class AudioCodec : public sfl::Codec   // TODO Move into the "sfl" namespace
 
         void init (uint8 payloadType, uint32 clockRate);
 };
+} // end namespace sfl
 
 #endif
diff --git a/sflphone-common/src/audio/codecs/audiocodecfactory.cpp b/sflphone-common/src/audio/codecs/audiocodecfactory.cpp
index 595e7fbadb454fabab147b086a4fb11d92fadb17..e751d1cab51c1576cd592a900e74ee021d8cbe15 100644
--- a/sflphone-common/src/audio/codecs/audiocodecfactory.cpp
+++ b/sflphone-common/src/audio/codecs/audiocodecfactory.cpp
@@ -108,9 +108,9 @@ AudioCodecFactory::getCodec (AudioCodecType payload)
 {
     CodecsMap::iterator iter = _CodecsMap.find (payload);
 
-    if (iter!=_CodecsMap.end()) {
-        return static_cast<AudioCodec *>(iter->second);
-    }
+    // FIXME: isn't this static cast pointless?
+    if (iter != _CodecsMap.end())
+        return static_cast<sfl::AudioCodec *>(iter->second);
 
     _error ("CodecDescriptor: Error cannont found codec %i in _CodecsMap from codec descriptor", payload);
 
diff --git a/sflphone-common/src/audio/codecs/celtcodec.cpp b/sflphone-common/src/audio/codecs/celtcodec.cpp
index 6db7d29fb623620bb610b3be65255ec1d29fb7ff..4ce2b45f201b4934343d9b51d438e797fe5ab3a4 100644
--- a/sflphone-common/src/audio/codecs/celtcodec.cpp
+++ b/sflphone-common/src/audio/codecs/celtcodec.cpp
@@ -33,11 +33,11 @@
 #include <celt/celt.h>
 
 
-class Celt : public AudioCodec
+class Celt : public sfl::AudioCodec
 {
 
     public:
-        Celt (int payload=115)	: AudioCodec (payload, "celt") {
+        Celt (int payload=115)	: sfl::AudioCodec (payload, "celt") {
 
             _clockRate = 32000;
             _frameSize = 320;  // fixed frameSize, TODO: support variable size from 64 to 512
diff --git a/sflphone-common/src/audio/codecs/g722.cpp b/sflphone-common/src/audio/codecs/g722.cpp
index 0335aea92a7249a8be677f676f4c8c1d2b8b733f..41ec89a9e101dd2ec3b6b7f45566947de22444e4 100644
--- a/sflphone-common/src/audio/codecs/g722.cpp
+++ b/sflphone-common/src/audio/codecs/g722.cpp
@@ -43,13 +43,13 @@
 #define FALSE 0
 
 
-class G722 : public AudioCodec
+class G722 : public sfl::AudioCodec
 {
 
     public:
 
         G722 (int payload=9)
-            : AudioCodec (payload, "G722") {
+            : sfl::AudioCodec (payload, "G722") {
             _clockRate = 16000;
             _frameSize = 320; // samples, 20 ms at 16kHz
             _channel   = 1;
diff --git a/sflphone-common/src/audio/codecs/gsmcodec.cpp b/sflphone-common/src/audio/codecs/gsmcodec.cpp
index 8ab18aa41872b16edc4de9bd367cb7878641c200..8be02bc61c5a520f0a639a6a218bdac96459af04 100644
--- a/sflphone-common/src/audio/codecs/gsmcodec.cpp
+++ b/sflphone-common/src/audio/codecs/gsmcodec.cpp
@@ -39,12 +39,12 @@ extern "C" {
  * GSM audio codec C++ class (over gsm/gsm.h)
  */
 
-class Gsm : public AudioCodec
+class Gsm : public sfl::AudioCodec
 {
 
     public:
         // _payload should be 3
-        Gsm (int payload=3) : AudioCodec (payload, "GSM"), _decode_gsmhandle (NULL), _encode_gsmhandle (NULL) {
+        Gsm (int payload=3) : sfl::AudioCodec (payload, "GSM"), _decode_gsmhandle (NULL), _encode_gsmhandle (NULL) {
             _clockRate = 8000;
             _frameSize = 160; // samples, 20 ms at 8kHz
             _channel = 1;
diff --git a/sflphone-common/src/audio/codecs/speexcodec_nb.cpp b/sflphone-common/src/audio/codecs/speexcodec_nb.cpp
index 8a22ab9d5ab62b39ceb611d4f2f1dba78addf7c8..e0fcd2a8150eb8e9a18d4247dbaa91953ffd4aab 100644
--- a/sflphone-common/src/audio/codecs/speexcodec_nb.cpp
+++ b/sflphone-common/src/audio/codecs/speexcodec_nb.cpp
@@ -34,12 +34,12 @@
 #include <speex/speex.h>
 #include <speex/speex_preprocess.h>
 
-class Speex : public AudioCodec
+class Speex : public sfl::AudioCodec
 {
 
     public:
         Speex (int payload=110)
-            : AudioCodec (payload, "speex"),
+            : sfl::AudioCodec (payload, "speex"),
               _speexModePtr (NULL),
               _speex_dec_bits(),
               _speex_enc_bits(),
diff --git a/sflphone-common/src/audio/codecs/speexcodec_ub.cpp b/sflphone-common/src/audio/codecs/speexcodec_ub.cpp
index 3a9cebee7adcda38d224de9ad58b20e5ceb1660c..36a8cd1f42abd4c376f316bf588fa756459e0bc9 100644
--- a/sflphone-common/src/audio/codecs/speexcodec_ub.cpp
+++ b/sflphone-common/src/audio/codecs/speexcodec_ub.cpp
@@ -33,12 +33,12 @@
 #include <cstdio>
 #include <speex/speex.h>
 
-class Speex : public AudioCodec
+class Speex : public sfl::AudioCodec
 {
 
     public:
         Speex (int payload=112)
-            : AudioCodec (payload, "speex"),
+            : sfl::AudioCodec (payload, "speex"),
               _speexModePtr (NULL),
               _speex_dec_bits(),
               _speex_enc_bits(),
diff --git a/sflphone-common/src/audio/codecs/speexcodec_wb.cpp b/sflphone-common/src/audio/codecs/speexcodec_wb.cpp
index 3969ee94a39d2ddc57d10a7be561b9135350cd64..e4fcd4146280b5b5037ddb6797ae1e7dd7e16c29 100644
--- a/sflphone-common/src/audio/codecs/speexcodec_wb.cpp
+++ b/sflphone-common/src/audio/codecs/speexcodec_wb.cpp
@@ -33,12 +33,12 @@
 #include <cstdio>
 #include <speex/speex.h>
 
-class Speex : public AudioCodec
+class Speex : public sfl::AudioCodec
 {
 
     public:
         Speex (int payload=111)
-            : AudioCodec (payload, "speex"),
+            : sfl::AudioCodec (payload, "speex"),
               _speexModePtr (NULL),
               _speex_dec_bits(),
               _speex_enc_bits(),
diff --git a/sflphone-common/src/audio/codecs/ulaw.cpp b/sflphone-common/src/audio/codecs/ulaw.cpp
index 3e40b8b8a9861c16e0123bb7c4b5408de4a45ace..56d65717425a1537dd281ad0cf9275ea05c2359d 100644
--- a/sflphone-common/src/audio/codecs/ulaw.cpp
+++ b/sflphone-common/src/audio/codecs/ulaw.cpp
@@ -34,13 +34,13 @@
 #include "../common.h"
 #include "audiocodec.h"
 
-class Ulaw : public AudioCodec
+class Ulaw : public sfl::AudioCodec
 {
 
     public:
         // 0 PCMU A 8000 1 [RFC3551]
         Ulaw (int payload=0)
-            : AudioCodec (payload, "PCMU") {
+            : sfl::AudioCodec (payload, "PCMU") {
             _clockRate = 8000;
             _frameSize = 160; // samples, 20 ms at 8kHz
             _channel   = 1;
diff --git a/sflphone-common/src/audio/sound/audiofile.cpp b/sflphone-common/src/audio/sound/audiofile.cpp
index 101cc56e3a53e67cbbe42c3b6e080bde3473f3f0..2c5f48eb2ccb8f09b3406dddeeb38163d22a5d26 100644
--- a/sflphone-common/src/audio/sound/audiofile.cpp
+++ b/sflphone-common/src/audio/sound/audiofile.cpp
@@ -39,6 +39,7 @@
 
 #include "audiofile.h"
 #include "audio/codecs/audiocodecfactory.h"
+#include "audio/codecs/audiocodec.h"
 #include "audio/samplerateconverter.h"
 
 #include "manager.h"
@@ -55,7 +56,7 @@ RawFile::~RawFile()
 
 // load file in mono format
 bool
-RawFile::loadFile (const std::string& filename, AudioCodec* codec , unsigned int sampleRate=8000)
+RawFile::loadFile (const std::string& filename, sfl::AudioCodec* codec , unsigned int sampleRate=8000)
 {
     _codec = codec;
 
@@ -453,7 +454,7 @@ bool WaveFile::openExistingWaveFile (const std::string& fileName, int audioSampl
 }
 
 
-bool WaveFile::loadFile (const std::string& filename, AudioCodec * /*codec*/, unsigned int sampleRate)
+bool WaveFile::loadFile (const std::string& filename, sfl::AudioCodec * /*codec*/, unsigned int sampleRate)
 {
     openFile (filename, sampleRate);
 
diff --git a/sflphone-common/src/audio/sound/audiofile.h b/sflphone-common/src/audio/sound/audiofile.h
index 857de3aaf5d93aaec44a1f2091ec3fae65766a76..f0d0ff701eac4eda3c86d5be9c5b407f33901667 100644
--- a/sflphone-common/src/audio/sound/audiofile.h
+++ b/sflphone-common/src/audio/sound/audiofile.h
@@ -37,9 +37,10 @@
 #include <fstream>
 
 #include "audio/audioloop.h"
-#include "audio/codecs/audiocodec.h"
-#include "audio/codecs/audiocodecfactory.h"
 
+namespace sfl {
+class AudioCodec;
+}
 
 /**
  * @brief Abstract interface for file readers
@@ -55,7 +56,7 @@ class AudioFile : public AudioLoop
         * @param sampleRate	The sample rate to read it
         * @return bool   True on success
         */
-        virtual bool loadFile (const std::string& filename, AudioCodec *codec , unsigned int sampleRate) = 0;
+        virtual bool loadFile (const std::string& filename, sfl::AudioCodec *codec , unsigned int sampleRate) = 0;
 
         /**
          * Start the sound file
@@ -114,7 +115,7 @@ class RawFile : public AudioFile
          * @param sampleRate	The sample rate to read it
          * @return bool   True on success
          */
-        virtual bool loadFile (const std::string& filename, AudioCodec *codec , unsigned int sampleRate);
+        virtual bool loadFile (const std::string& filename, sfl::AudioCodec *codec , unsigned int sampleRate);
 
     private:
         // Copy Constructor
@@ -127,7 +128,7 @@ class RawFile : public AudioFile
         std::string _filename;
 
         /** Your preferred codec */
-        AudioCodec* _codec;
+        sfl::AudioCodec* _codec;
 };
 
 
@@ -155,7 +156,7 @@ class WaveFile : public AudioFile
              * @param sampleRate	The sample rate to read it
              * @return bool   True on success
              */
-        virtual bool loadFile (const std::string& filename, AudioCodec *codec , unsigned int sampleRate);
+        virtual bool loadFile (const std::string& filename, sfl::AudioCodec *codec , unsigned int sampleRate);
 
     private:
 
diff --git a/sflphone-common/src/iax/iaxvoiplink.cpp b/sflphone-common/src/iax/iaxvoiplink.cpp
index 47a73c936d04f3365c156dbdc5255a29918d6b63..9d14d0eec62b23a2bed247867ecc148c3c830bbf 100644
--- a/sflphone-common/src/iax/iaxvoiplink.cpp
+++ b/sflphone-common/src/iax/iaxvoiplink.cpp
@@ -302,7 +302,7 @@ IAXVoIPLink::sendAudioFromMic (void)
 {
 
     int maxBytesToGet, availBytesFromMic, bytesAvail, compSize;
-    AudioCodec *audioCodec = NULL;
+    sfl::AudioCodec *audioCodec = NULL;
     IAXCall *currentCall;
 
     // We have to update the audio layer type in case we switched
@@ -330,7 +330,7 @@ IAXVoIPLink::sendAudioFromMic (void)
             if (callIsActive) {
 
 		AudioCodecType codecType = currentCall->getAudioCodec();
-                audioCodec = static_cast<AudioCodec *>(currentCall->getAudioCodecFactory().getCodec (codecType));
+                audioCodec = static_cast<sfl::AudioCodec *>(currentCall->getAudioCodecFactory().getCodec (codecType));
 
                 // Send sound here
 
@@ -708,7 +708,7 @@ std::string
 IAXVoIPLink::getCurrentCodecName(const CallID& /*id*/)
 {
     IAXCall *call = NULL;
-    AudioCodec *audioCodec = NULL;
+    sfl::AudioCodec *audioCodec = NULL;
     std::string name = "";
 
     call = getIAXCall (Manager::instance().getCurrentCallId());
@@ -719,7 +719,7 @@ IAXVoIPLink::getCurrentCodecName(const CallID& /*id*/)
     }
 
     AudioCodecType audioCodecType = call->getAudioCodec();
-    audioCodec= static_cast<AudioCodec *>(call->getAudioCodecFactory().getCodec (audioCodecType));
+    audioCodec= static_cast<sfl::AudioCodec *>(call->getAudioCodecFactory().getCodec (audioCodecType));
 
     if(audioCodec == NULL) {
         _error("IAX: Error: Could not load audio codec");
@@ -975,7 +975,7 @@ IAXVoIPLink::iaxHandleVoiceEvent (iax_event* event, IAXCall* call)
     unsigned char *data;
     unsigned int size, max, nbInt16;
     int expandedSize, nbSample_;
-    AudioCodec *audioCodec;
+    sfl::AudioCodec *audioCodec;
 
     if (!call) {
         return;
@@ -988,7 +988,7 @@ IAXVoIPLink::iaxHandleVoiceEvent (iax_event* event, IAXCall* call)
     }
 
     AudioCodecType audioCodecType = call->getAudioCodec();
-    audioCodec = static_cast<AudioCodec *>(call->getAudioCodecFactory().getCodec (audioCodecType));
+    audioCodec = static_cast<sfl::AudioCodec *>(call->getAudioCodecFactory().getCodec (audioCodecType));
 
     if (!audioCodec)
         return;
diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 84fc65dc922611b65729d549acdecb5383ad61c5..23a2fd5ba15f72e3d7cc1a847459bef36f1d6cef 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -2304,7 +2304,7 @@ void ManagerImpl::ringback ()
 void ManagerImpl::ringtone (const AccountID& accountID)
 {
     std::string ringchoice;
-    AudioCodec *codecForTone;
+    sfl::AudioCodec *codecForTone;
     int layer, samplerate;
     bool loadFile;
 
@@ -2344,7 +2344,7 @@ void ManagerImpl::ringtone (const AccountID& accountID)
         layer = _audiodriver->getLayerType();
 
         samplerate = _audiodriver->getSampleRate();
-        codecForTone = static_cast<AudioCodec *>(_audioCodecFactory.getFirstCodecAvailable());
+        codecForTone = static_cast<sfl::AudioCodec *>(_audioCodecFactory.getFirstCodecAvailable());
 
         audioLayerMutexUnlock();
 
diff --git a/sflphone-common/src/sip/sdp.cpp b/sflphone-common/src/sip/sdp.cpp
index affb01d96510cf080d63ac8933b18f9a6f3688a6..7e66c344e72f6455761db75582558883187ee603 100644
--- a/sflphone-common/src/sip/sdp.cpp
+++ b/sflphone-common/src/sip/sdp.cpp
@@ -151,7 +151,7 @@ bool Sdp::hasSessionMedia(void)
     return listNotEmpty;
 }
 
-AudioCodec* Sdp::getSessionMedia (void) throw(SdpException)
+sfl::AudioCodec* Sdp::getSessionMedia (void) throw(SdpException)
 {
 
     int nbMedia;
@@ -178,7 +178,7 @@ AudioCodec* Sdp::getSessionMedia (void) throw(SdpException)
 
     codec = mediaList[0]->get_media_codec_list() [0];
 
-    return static_cast<AudioCodec *>(codec);
+    return static_cast<sfl::AudioCodec *>(codec);
 }
 
 void Sdp::setMediaDescriptorLine (sdpMedia *media, pjmedia_sdp_media** p_med)
diff --git a/sflphone-common/src/sip/sdp.h b/sflphone-common/src/sip/sdp.h
index 4afeda51ef716fa2bdd6807f92a28fb002b857bc..2f2bdc7e4cb85904856811dcbd241e1da404c5df 100644
--- a/sflphone-common/src/sip/sdp.h
+++ b/sflphone-common/src/sip/sdp.h
@@ -42,11 +42,14 @@
 #include <pj/assert.h>
 #include <vector>
 
-#include "audio/codecs/audiocodecfactory.h"
 #include "sdpmedia.h"
 
 #include <exception>
 
+namespace sfl {
+    class AudioCodec;
+}
+
 class SdpException : public std::exception
 {
     public:
@@ -157,7 +160,7 @@ class Sdp
         /**
          * Return the codec of the first media after negociation
          */
-        AudioCodec* getSessionMedia (void) throw(SdpException);
+        sfl::AudioCodec* getSessionMedia (void) throw(SdpException);
 
         /*
          * On building an invite outside a dialog, build the local offer and create the
diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp
index 98a8befca3deabd5c825f22d1308d668aaced742..69ca116a379611ea90cf572fd1f862a217a3b0c1 100644
--- a/sflphone-common/src/sip/sipvoiplink.cpp
+++ b/sflphone-common/src/sip/sipvoiplink.cpp
@@ -715,7 +715,7 @@ Call *SIPVoIPLink::newOutgoingCall (const CallID& id, const std::string& toUrl)
 		call->getAudioRtp()->initAudioRtpSession (call);
 		call->getAudioRtp()->initLocalCryptoInfo (call);
 		_info ("UserAgent: Start audio rtp session");
-		call->getAudioRtp()->start (static_cast<AudioCodec *>(audiocodec));
+		call->getAudioRtp()->start (static_cast<sfl::AudioCodec *>(audiocodec));
 	} catch (...) {
 		throw VoipLinkException ("Could not start rtp session for early media");
 	}
@@ -1018,7 +1018,7 @@ SIPVoIPLink::offhold (const CallID& id) throw (VoipLinkException)
 
         call->getAudioRtp()->initAudioRtpConfig (call);
         call->getAudioRtp()->initAudioRtpSession (call);
-        call->getAudioRtp()->start (static_cast<AudioCodec *>(audiocodec));
+        call->getAudioRtp()->start (static_cast<sfl::AudioCodec *>(audiocodec));
 
     }
     catch (SdpException &e) {
@@ -1793,7 +1793,7 @@ bool SIPVoIPLink::SIPNewIpToIpCall (const CallID& id, const std::string& to)
             call->getAudioRtp()->initAudioRtpConfig (call);
             call->getAudioRtp()->initAudioRtpSession (call);
             call->getAudioRtp()->initLocalCryptoInfo (call);
-            call->getAudioRtp()->start (static_cast<AudioCodec *>(audiocodec));
+            call->getAudioRtp()->start (static_cast<sfl::AudioCodec *>(audiocodec));
         } catch (...) {
             _debug ("UserAgent: Unable to create RTP Session in new IP2IP call (%s:%d)", __FILE__, __LINE__);
         }
@@ -3509,7 +3509,7 @@ void sdp_media_update_cb (pjsip_inv_session *inv, pj_status_t status)
     if (!sdpSession)
         return;
 
-    AudioCodec *sessionMedia = sdpSession->getSessionMedia();
+    sfl::AudioCodec *sessionMedia = sdpSession->getSessionMedia();
 
     if (!sessionMedia)
         return;
@@ -3530,7 +3530,7 @@ void sdp_media_update_cb (pjsip_inv_session *inv, pj_status_t status)
             if (audiocodec == NULL)
                 _error ("UserAgent: No audiocodec found");
 
-            call->getAudioRtp()->updateSessionMedia (static_cast<AudioCodec *>(audiocodec));
+            call->getAudioRtp()->updateSessionMedia (static_cast<sfl::AudioCodec *>(audiocodec));
         }
     }  // FIXME: should this really be std::exception? If so, it should be caught last
     catch (const SdpException &e) {
@@ -4052,7 +4052,7 @@ transaction_request_cb (pjsip_rx_data *rdata)
     // Init audio rtp session
     try {
         _debug ("UserAgent: Create RTP session for this call");
-        call->getAudioRtp()->start (static_cast<AudioCodec *>(audiocodec));
+        call->getAudioRtp()->start (static_cast<sfl::AudioCodec *>(audiocodec));
     } catch (...) {
         _warn ("UserAgent: Error: Failed to create rtp thread from answer");
     }