Graphics Reference
In-Depth Information
decoding of remaining pictures, where the set of retained reference pictures is
called the reference picture set (RPS). For a proper management of the RPS, HEVC
supports a couple of new syntax elements in the (independent) slice segment header
that lead to a far more robust approach in case of picture and/or slice losses when
compared to the corresponding capabilities of H.264 j MPEG-4 AVC.
Other syntax elements in the (independent) slice segment header are directly
related to the decoding and parsing process, such as a flag indicating the use of
the temporal motion vector predictor, the slice QP delta, parameters for weighted
prediction as well as a flag indicating the use of a specific set of CABAC
initialization values for P and B slices.
For in-loop filtering, there are optional flags in the (independent) slice segment
header for enabling/disabling the deblocking filter for the current slice or for
enabling/disabling the whole in-loop filtering, including sample-adaptive offset
(SAO) filtering, across the left and upper boundaries of the current slice.
In order to be future proof in terms of extensibility, the HEVC slice header syntax
also includes optional syntax elements that allow for extensions of the slice header
by later versions and/or profiles of the standard.
3.3.2
High-Level Parallelization Features
Parallel processing can enable the operation of a video codec in real-time on
systems which would not be able to support the codec operation in real-time in a
non-parallel execution fashion. Today's hardware architectures inherently support
multi-threading also on low power platforms. This is somewhat motivated by the
fact that manufacturers of general purpose processors and later also manufactures
of low-power ARM based processors started producing multi-core processors when
it became more difficult/costly to boost CPU processing power by raising clock
speed as they had done prior to the multi-core revolution. The performance gain of
multi-threading is only achievable, if the target platform also supports the parallel
execution of threads in such a way that multiple hardware execution units such as,
e.g., multi-core processor(s) can be used.
Multi-threading in the software context refers to a programming model in which
the computation is specified in multiple independent units called threads that share
some resources, specifically memory. These threads can run in a time division or
in a parallel manner depending on the implementation and underlying hardware.
Threads usually communicate via shared memory, and have to use synchronization
operations to ensure a proper use of shared resources and to satisfy ordering
constraints in the program. Commonly synchronization statements such as locks,
semaphores, barriers, and condition variables are used to control the progress among
the threads.
The performance gain achieved by multi-threading is measured as speed up in
terms of execution time of the program code on a single processing unit divided
by the execution time of the program code on multiple p parallel processing units.
Search WWH ::




Custom Search