Index: sipXmediaLib/include/mp/MpeSipxILBC.h
===================================================================
--- sipXmediaLib/include/mp/MpeSipxILBC.h	(revision 8909)
+++ sipXmediaLib/include/mp/MpeSipxILBC.h	(working copy)
@@ -107,7 +107,7 @@
 private:
    static const MpCodecInfo smCodecInfo; ///< Static information about the codec
 
-   MpAudioSample mpBuffer[160]; ///< Buffer used to store input samples
+   MpAudioSample mpBuffer[240]; ///< Buffer used to store input samples
    int mBufferLoad;             ///< How much data there is in the byffer
    iLBC_Enc_Inst_t_* mpState;   ///< Internal iLBC decoder state.
 };
Index: sipXmediaLib/src/mp/MpdSipxILBC.cpp
===================================================================
--- sipXmediaLib/src/mp/MpdSipxILBC.cpp	(revision 8909)
+++ sipXmediaLib/src/mp/MpdSipxILBC.cpp	(working copy)
@@ -29,12 +29,12 @@
     8000,                       // samplingRate
     8,                          // numBitsPerSample (not used)
     1,                          // numChannels
-    160,                        // interleaveBlockSize
-    15200,                      // bitRate
-    NO_OF_BYTES_20MS * 8,       // minPacketBits
-    NO_OF_BYTES_20MS * 8,       // avgPacketBits
-    NO_OF_BYTES_20MS * 8,       // maxPacketBits
-    160,                        // numSamplesPerFrame
+    240,                        // interleaveBlockSize
+    13334,                      // bitRate
+    NO_OF_BYTES_30MS * 8,       // minPacketBits
+    NO_OF_BYTES_30MS * 8,       // avgPacketBits
+    NO_OF_BYTES_30MS * 8,       // maxPacketBits
+    240,                        // numSamplesPerFrame
     6);                         // preCodecJitterBufferSize (should be adjusted)
 
 
@@ -60,7 +60,7 @@
    {
       mpState = new iLBC_Dec_Inst_t();
       memset(mpState, 0, sizeof(*mpState));
-      ::initDecode(mpState, 20, 1);
+      ::initDecode(mpState, 30, 1);
    }
    return OS_SUCCESS;
 }
@@ -76,30 +76,33 @@
                         unsigned decodedBufferLength,
                         MpAudioSample *samplesBuffer)
 {
-   if (decodedBufferLength < 160)
+   // Check if available buffer size is enough for the packet.
+   if (decodedBufferLength < 240)
    {
       osPrintf("MpdSipxILBC::decode: Jitter buffer overloaded. Glitch!\n");
       return 0;
    }
 
    // Decode incoming packet to temp buffer. If no packet - do PLC.
-   float buffer[160];
+   float buffer[240];
    if (pPacket.isValid())
    {
-      // Assert that available buffer size is enough for the packet.
-      if (NO_OF_BYTES_20MS != pPacket->getPayloadSize())
-         return 0;
+      if (NO_OF_BYTES_30MS != pPacket->getPayloadSize())
+      {
+         osPrintf("MpdSipxILBC::decode: Payload size: %d!\n", pPacket->getPayloadSize());
+	     return 0;
+      }
 
       // Packet data available. Decode it.
       iLBC_decode(buffer, (unsigned char*)pPacket->getDataPtr(), mpState, 1);
    }
    else
    {
-      // Packet data does not available. Do PLC.
+      // Packet data is not available. Do PLC.
       iLBC_decode(buffer, NULL, mpState, 0);
    }
-
-   for (int i = 0; i < 160; ++i)
+   
+   for (int i = 0; i < 240; ++i)
    {
       float tmp = buffer[i];
       if (tmp > SHRT_MAX)
@@ -110,7 +113,7 @@
       samplesBuffer[i] = MpAudioSample(tmp + 0.5f);
    }
 
-   return 160;
+   return 240;
 }
 
 #endif // HAVE_ILBC ]
Index: sipXmediaLib/src/mp/MpeSipxILBC.cpp
===================================================================
--- sipXmediaLib/src/mp/MpeSipxILBC.cpp	(revision 8909)
+++ sipXmediaLib/src/mp/MpeSipxILBC.cpp	(working copy)
@@ -24,18 +24,18 @@
 }
 
 const MpCodecInfo MpeSipxILBC::smCodecInfo(
-    SdpCodec::SDP_CODEC_ILBC,    // codecType
-    "iLBC",                 // codecVersion
+    SdpCodec::SDP_CODEC_ILBC,   // codecType
+    "iLBC",                     // codecVersion
     false,                      // usesNetEq
     8000,                       // samplingRate
     8,                          // numBitsPerSample
     1,                          // numChannels
-    160,                        // interleaveBlockSize
-    15200,                      // bitRate. It doesn't matter right now.
-    NO_OF_BYTES_20MS*8,                       // minPacketBits
-    NO_OF_BYTES_20MS*8,                       // avgPacketBits
-    NO_OF_BYTES_20MS*8,                       // maxPacketBits
-    160);                       // numSamplesPerFrame
+    240,                        // interleaveBlockSize
+    13334,                      // bitRate. It doesn't matter right now.
+    NO_OF_BYTES_30MS*8,         // minPacketBits
+    NO_OF_BYTES_30MS*8,         // avgPacketBits
+    NO_OF_BYTES_30MS*8,         // maxPacketBits
+    240);                       // numSamplesPerFrame
 
 
 MpeSipxILBC::MpeSipxILBC(int payloadType)
@@ -56,7 +56,7 @@
    assert(NULL == mpState);
    mpState = new iLBC_Enc_Inst_t();
    memset(mpState, 0, sizeof(*mpState));
-   ::initEncode(mpState, 20);
+   ::initEncode(mpState, 30);
 
    return OS_SUCCESS;
 }
@@ -79,19 +79,19 @@
                               MpAudioBuf::SpeechType& rAudioCategory)
 {
    memcpy(&mpBuffer[mBufferLoad], pAudioSamples, sizeof(MpAudioSample)*numSamples);
-   mBufferLoad = mBufferLoad+numSamples;
-   assert(mBufferLoad <= 160);
+   mBufferLoad += numSamples;
+   assert(mBufferLoad <= 240);
 
-   if (mBufferLoad == 160)
+   if (mBufferLoad == 240)
    {
-      float buffer[160];
-      for (int i = 0; i < 160; ++i)
+      float buffer[240];
+      for (int i = 0; i < 240; ++i)
          buffer[i] =  float(mpBuffer[i]);
 
       iLBC_encode((unsigned char*)pCodeBuf, buffer, mpState);
 
       mBufferLoad = 0;
-      rSizeInBytes = NO_OF_BYTES_20MS;
+      rSizeInBytes = NO_OF_BYTES_30MS;
       sendNow = true;
    } 
    else 
Index: sipXtackLib/src/net/SdpCodecFactory.cpp
===================================================================
--- sipXtackLib/src/net/SdpCodecFactory.cpp	(revision 8909)
+++ sipXtackLib/src/net/SdpCodecFactory.cpp	(working copy)
@@ -627,9 +627,9 @@
                             MIME_TYPE_AUDIO,
                             MIME_SUBTYPE_ILBC,
                             8000,
-                            20000,
+                            30000,
                             1,
-                            "mode=20",
+                            "",
                             SdpCodec::SDP_CODEC_CPU_HIGH,
                             SDP_CODEC_BANDWIDTH_LOW);
             addCodec(aCodec);
