Size and mode selection
The size of the block to be used for prediction is chosen by the coder which identifies edges and their direction (horizontal, vertical, diagonal, etc.) in order to select the most appropriate block size. The mode used to encode the prediction of a block is chosen based on the textures and gradients in the video source data. Different modes are tried and the one producing the least amount of residual error is selected.
The choice of intra-prediction mode for each 4 X 4 block must be signalled to the decoder and this could potentially require a large number of bits. However, intra-modes for neighbouring 4 X 4 blocks are highly correlated. For example, if previously encoded 4 X 4 blocks X and Y in Figure 5.6 were predicted using mode 2, it is likely that the best mode for block Z (current block) is also mode 2.
Intra-prediction operation
The principle of intra-prediction is the same as that of inter-prediction (Figure 5.7). A predicted P block is produced based on previously scanned and encoded block or blocks of the same frame. The predicted block is
then compared with the current block or more precisely with the current block as it would be when decoded at the receiving end to produce an intra-residual error which is transformed into coefficients and quantised to form the bitstream. In Figure 5.7, the block memory holds the pixel data of the previous block or blocks which are fed into the intra-encoder to produce a predicted intrablock P. The predicted block is then fed into a comparator to produce the residual error. Following transformation and quantisation, the bit stream is sent to the channel encoder for transmission. Data containing information of the intra-prediction mode parameters is also sent out to form part of the bit stream. The block memory is refreshed with the currently encoded block. This is carried out by decoding the bitstream (inverse transformation, T-1 and inverse-quantisation, Q-1) to re-produce the residual error as it would be produced at the receiving end. This residual error is then added to the predicted block P to reconstruct the current block and refresh the block memory store.