![](https://csdnimg.cn/release/download_crawler_static/11729735/bg8.jpg)
310 M. Tikekar et al.
10.3.2 Solutions
There are several approaches that have been explored to increase the throughput
of CABAC, which is dictated by the number of binary symbols it can decode per
second (bin-rate). One method is to pipeline the CABAC to reduce the critical path
delay [26]. However, the deeper the pipeline, the more stalls or more speculative
computations/branching required. Alternatively, multiple arithmetic decoders are
concatenated to decode multiple bins per cycle [12, 25]. As the number of bins
per cycle increases, the number of speculative computations increases exponentially
and the critical path delay increases linearly. Finally, another approach is to decode
a variable number of bins per cycle, and assume that the most probable bins are
decoded each cycle [27]. As the number of bins increases, the number of speculative
computations only increases linearly; however, the critical path delay also increases
linearly and the number of bins decoded per cycle increases less than linearly, which
results in lower bin-rate. More discussion on this can be found in [16]. To address
these challenges, the CABAC in HEVC minimizes dependencies across consecutive
bins, particularly for the residual coding, and has fewer regular coded bins in order
to reduce the amount of speculative computation required when using the pipelining
or multiple bins architectures. In addition, it also groups bypass bins to enable the
decoder to fully leverage the fast decoding of bypass coded bins [18].
To address the imbalance in workload between entropy decoding (Group I in
Fig. 10.2) and the rest of the decoder (Group II in Fig. 10.2), a very large buffer
can be inserted after the entropy decoder to average out the workload. Note that
the standard constrains the workload of the entropy decoder at the frame level
(using max BinCountsInNalUnits) and across frames (using max bit-rate in the level
limit); thus using frame level buffering between the entropy decoder and the rest of
the decoder can help to address this imbalance. This is commonly referred to as
entropy decoupling. However, this comes at the cost of an additional frame delay
and increased memory bandwidth. The memory bandwidth cost can be reduced if
the intermediate values are stored as binary symbols of the CABAC rather than
the reconstructed syntax elements [10]. An added advantage of having frame level
buffering is that multiple rows of CTU can be decoded in parallel, since all the
decoded syntax elements for the frame can be read from the buffer [5]. These new
features enable CABAC decoders in HEVC to achieve higher throughput at lower
cost than in H,264.AVC as demonstrated in [31].
If latency cannot be tolerated, HEVC contains high level parallelism tools such
as slices, tiles and wavefront parallel processing, which enable multiple CABAC
decoders to operate in parallel on the same frame. However, there is no guarantee
that these features will be enabled by the encoder.
10.4 Inverse Transform and Dequantization
Dequantization scales up coefficients decoded by the entropy decoder and inverse
transform converts the scaled coefficients to residue pixels using a 2-D Inverse
Discrete Cosine Transform (IDCT) or a 2-D Inverse Discrete Sine Transform