The name Codec comes from its function, which is the ‘coding-decoding of digital signals.’
In hardware implementations Codec are hardware devices, a soundcard, that convert digital signals into analogue signals that can be fed to a speaker. Codec devices use a digital-to-analogue convertor to convert digital signals into analogue signals, they can also handle the reverse procedure using a digital-to-analogue convertor that runs off the same clock.
In software the processes is typically reversed and the goal is to ‘compress and decompress’ high-fidelity analogue signals into encoded digital signals of a minimum number of bits. Software codec use algorithms to effectively reduce the size of a file for storage or transmission.
In VoIP, codec are used to compress and encode analogue voice signals into a reduced digital format for transmission. At the recipient’s end the digital signal is then decompressed and decoded for signal replay. A codec works by sampling a signal several thousand times a second and converting each small sample into a compiled encoded digital signal for transmission. Once decoded at the receiver the missing parts of the analogue signal are not perceptible to the human ear. The number of times a sample is conducted generally relates to the quality of the codec for example a 64k sample a second is the same as a standard landline call so the call quality should be similar. Other codec are aimed at providing compression and sample at 32k, 16k and even 8k in order to support low bandwidth VoIP internet bandwidth. The lower the sample rate the less bandwidth will be required for transmission with some trade-off with voice quality.
Software codec employed in VoIP situations use special voice algorithms that not only sample at low rates, 8k samples per second, but they also take into account peculiarities in a two way simultaneous telephone conversation. The algorithm detects when there is silence and then they send nothing, and as a large percentage of any telephone conversation is silence this greatly increase the efficiency of the compression without losing quality. Packet based systems have the flexibility to do this whereas circuit based synchronous systems cannot they have to send packets whether they are empty or not.