# How does a Huffman encoded message gets unified before channel encoding?

I aim to understand the signal entire transmission pipeline. Currenlty, I am facing a problem regarding the handling of a Huffman encoded message.

Example:

• Message $X$ contains symbols $a(50\%)$, $b(30\%)$ and $c(20\%)$.
• Huffman Code with code word length $2$:

\begin{align} cc &= 11 \\ bc &= 101\\ ac &= 011\\ \vdots &=\vdots\\ aa &= 0000 \end{align} There are code words with different lengths. When I go further down the signal transmission pipeline i. e. modulation or channel coding, both requisite bit packages of equal length.

Question: Where and how do the Huffman encoded code words get unified in its length?

Suggestion which doesn't work:

I always take 8 bits regardless of the encoded symbol.
$$11111111 = cccccccc$$
$$101101101 (9\text{bits})\implies\text{cutoff 1 bit} \implies 10110110 (8\text{bit}) \implies bcbc?? \\\implies\text{doesn't work}$$

• A question regarding the edit. Why did you changed "Bits" to "bits". In my understanding bits is the unit for information and Bits are binary symbols. Why aren't they binary symbols in this case? – siva Jan 5 '17 at 1:34

## 1 Answer

They don't get unified.

Think of the transmitter pipeline (data source, source encoder, channel coder, modulator, etc) as a sequence of independent blocks. Blocks don't assign any particular meaning or order to their input: they regard the input as just a stream of bits.

So, the output of the Huffman encoder can be regarded as a stream of 0s and 1s. The channel coder will subdivide the stream in groups of $k$ bits and convert them to groups of $n$ bits. Again, the channel coder output is a stream of bits that is processed by the modulator.

This approach has several benefits. One is that each block can be studied independently of the others. Also, you can connect, disconnect and replace blocks, and the system will continue to work, because there is no dependency between the blocks.

The main disadvantage is that there is a little bit of extra performance that can be obtained by making the blocks dependant of each other -- see for instance "joint source-channel encoding".

The receiver is more complicated because a block may need to know the boundaries of the code blocks. This is solved by introducing a frame structure to the data.