blob: ab7d172c65acdec17e1683f383f755d2df285c9b [file] [log] [blame]
#### 14.5 Summation of Predictor and Residue {#h-14-05}
Finally, the prediction and residue signals are summed to form the
reconstructed macroblock, which, except for loop filtering (taken up
next), completes the decoding process.
The summing procedure is fairly straightforward, having only a couple
of details. The prediction and residue buffers are both arrays of
16-bit signed integers. Each individual (Y, U, and V pixel) result
is calculated first as a 32-bit sum of the prediction and residue,
and is then saturated to 8-bit unsigned range (using, say, the
`clamp255` function defined above) before being stored as an 8-bit
unsigned pixel value.
VP8 also supports a mode where the encoding of a bitstream guarantees
all reconstructed pixel values between 0 and 255; compliant
bitstreams of such requirements have the `clamp_type` bit in the frame
header set to 1. In such a case, the `clamp255` function is no longer
required.
The summation process is the same, regardless of the (intra or inter)
mode of prediction in effect for the macroblock. The reference
decoder implementation of reconstruction may be found in the file
`idct_add.c`.