blob: 2b70b732b9057c0677c7460b7f1ae6654482f7c4 [file] [log] [blame]
#### 14.2 Inverse Transforms {#h-14-02}
If the Y2 residue block exists (i.e., the macroblock luma mode is not
`SPLITMV` or `B_PRED`), it is inverted first (using the inverse WHT) and
the element of the result at row i, column j is used as the 0th
coefficient of the Y subblock at position (i, j), that is, the Y
subblock whose index is (i * 4) + j. As discussed in Section 13, if
the luma mode is `B_PRED` or `SPLITMV`, the 0th Y coefficients are part
of the residue signal for the subblocks themselves.
In either case, the inverse transforms for the sixteen Y subblocks
and eight chroma subblocks are computed next. All 24 of these
inversions are independent of each other; their results may (at least
conceptually) be stored in 24 separate 4x4 arrays.
As is done by the reference decoder, an implementation may wish to
represent the prediction and residue buffers as macroblock-sized
arrays (that is, a 16x16 Y buffer and two 8x8 chroma buffers).
Regarding the inverse DCT implementation given below, this requires a
simple adjustment to the address calculation for the resulting
residue pixels.