iLBC Speech Codec
Internet Low Bitrate Codec
iLBC ia a high-complexity speech codec suitable for robust voice communication over IP.
iLBC is an excellent choice for providers/applications with restricted bandwidth requirements. It is suitable for VOIP applications, streaming audio, and messaging.
The iLBC algorithm can be used with data frame length of either 20 milliseconds or 30 milliseconds.
Availability
Availability
| Platforms |
| Arm ® Devices Armv7-A / Armv8-A / Armv9-A || Armv7-M / Armv8-M || Legacy Cortex-M3 |
| Texas Instruments – TI TMS320C6000 C64x/C64x+/C66x, C674x, TMS320C5000 C55x / Legacy C54x |
| Win32 DLL / Static LIB |
| Linux 32 Bit / 64 Bit |
ADT iLBC is available on the above Platforms: Other configurations are available upon request.
Features
- The only codec ever to be standardized by the IETF
- Royalty-free with speech quality better than G.729A and G.723.1.
- Better packet loss robustness compared to other low-bit rate codecs, including G.729A, G.729E, G.723.1 and G.728
- iLBC supports multiple frame sizes giving increased flexibility to meet the needs of different applications and/or VoIP equipment
- iLBC delivers the same basic quality as G.729E and exceeds G.729E under packet loss conditions
Description
iLBC is the first codec ever to be standardized by the IETF (RFC3951 and RFC3952) and is designated by CableLabs as a mandatory component of PacketCable voice-over-cable telephony systems.
Other standard low bit rate codecs make use of dependencies between speech frames, resulting in error proliferation when packets are lost or delayed. In contrast, iLBC encoded speech frames are independent. This unique technology gives iLBC robustness against packet loss and delay.
iLBC is a royalty-free codec for Voice over IP (VoIP) networks. iLBC delivers speech quality better than G.729A and equal to G.729E, while offering significantly better quality over congested networks with packet loss.
Specification Tables
NOTE: We specify MIPS (Millions of Instructions Per Second) as MCPS (Millions of Instruction Cycles Per Second). Unless otherwise specified, peak MIPS are indicated.
↓ Click on links below to view specification tables.
ARM Devices
iLBC Armv9-A Neoverse N2
CPU UtilizationThe ARM Neoverse is a group of 64-bit ARM processor cores.
| Function | MIPS |
| iLBC 30 Wideband WB | 6.2 |
| iLBC 20 Narrowband NB | 5.6 |
iLBC ARM Cortex-A8 / A9 / A15 || Armv7-A, Armv8-A
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
| Function | MIPS @20ms | MIPS @30ms | Program Memory | Data Memory | Per Channel Data Memory |
| Encode | 30 | 36 | 79768 | 3165 | 688 |
| Decode | 9 | 10 | 2032 |
iLBC ARM Cortex-M4
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
| Function | MIPS @20ms | MIPS @30ms | Program Memory | Data Memory | Per Channel Data Memory |
| Encode | 35 | 40.5 | 78448 | 3165 | 688 |
| Decode | 9.5 | 10.3 | 2032 |
iLBC ARM Cortex-M7 – Estimate
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
| Function | MIPS @20ms | MIPS @30ms | Program Memory | Data Memory | Per Channel Data Memory |
| Encode | 21 | 24.3 | 78448 | 3165 | 688 |
| Decode | 5.7 | 6.18 | 2032 |
iLBC ARM Cortex-M33/M35 – Estimate
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
| Function | MIPS @20ms | MIPS @30ms | Program Memory | Data Memory | Per Channel Data Memory |
| Encode | 29.4 | 34 | 78448 | 3165 | 688 |
| Decode | 8 | 8.7 | 2032 |
TI Processors
iLBC C64x / C64x+ / C66x /C674x
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
| Function | MIPS @20ms | MIPS @30ms | Program Memory | Data Memory | Per Channel Data Memory | |||
| Processor | C64x | C64x+ | C64x | C64x+ | C64x | C64x+ | C64x/C64x+ | C64x/C64x+ |
| Encode | 30.3 | 29.1 | 37.3 | 35.8 | — | — | — | 288 |
| Decode | 8.8 | 8.1 | 9.4 | 8.7 | — | — | — | 2032 |
| Decode / Enable | 39.1 | 37.2 | 46.7 | 44.5 | 78.4 k | 56.7 k | 3495 | 2720 |
iLBC C55x
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
| Codec Mode | MIPS | Program Memory | Data Memory | Per Channel Data Memory |
| 20 ms | 11.12 | 29350 | 6848 | 1359 |
| 30 ms | 12.65 | 29350 | 6848 | 1359 |
iLBC C54x
CPU Utilization & Memory RequirementsAll Memory usage is given in units of 16 bit word.
| Codec Mode | MIPS | Program Memory | Data Memory | Per Channel Data Memory |
| 20 ms | 15.65 | 15446 | 4560 | 1357 |
| 30 ms | 17.95 | 15446 | 4560 | 1357 |
Windows
iLBC Win32 (Dll and Static lib)
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
| Function | MIPS @20ms | MIPS @30ms | Program Memory | Data Memory | Per Channel Data Memory |
| Encode | 2.2 | 2.5 | 44623 | 6916 | 832 |
| Decode | 0.5 | 0.6 | 2032 |
Linux
iLBC 32 Bit*
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
*Contact Sales for 64 bit numbers.
| Function | MIPS @20ms | MIPS @30ms | Program Memory | Data Memory | Per Channel Data Memory |
| Encode | 2.3 | 2.5 | 58636 | 3268 | 688 |
| Decode | 0.7 | 0.66 | 2032 |
API Functions
API function call summary
iLBCFIX_GIPS_decoderinit(): initialize an iLBC decode channel
iLBCFIX_GIPS_encode(): perform iLBC encode
iLBCFIX_GIPS_decode(): perform iLBC decode