Graphics Reference
In-Depth Information
element end_of_slice_segment_flag is signaled to indicate whether the
corresponding CTU is the last CTU in the slice segment and, if this is the case,
to properly terminate the CABAC bitstream and to perform the above-mentioned
storage process for CABAC context variables. For more details about termination
and the handling of context memory in HEVC CABAC, please refer to Chap. 8 .
Obviously, dependent slice segments do not provide the same error robustness as
independent slice segments. In an error-free environment, however, an encoder can
choose to fragment a coded picture in potentially many small units and provide them
to the network transmission stack before having finished encoding the remainder of
the picture, and without incurring the penalty of broken in-picture dependencies.
One use case of dependent slice segments is the reduction of the end-to-end delay
for ultra-low delay applications, such as remote video or broadcast contribution.
Since the dependent slice segment header only carries a minimum of data, slice
segments may also be used as entry points for parallelization techniques. The latter
aspect as well as the relation to ultra-low delay requirements is discussed in more
detail in Sect. 3.3.4 .
In addition, the slice segment concept provides a fragmentation mechanism
for bitstream partitioning of over-sized NAL units to comply with the MTU size
requirements without incurring substantial coding efficiency losses, as it is usually
the case for regular slices. Slice segments are also useful for providing a correct
and byte-aligned fragmentation of entropy coded data in such a way that in case of
losing a dependent slice segment, the independent slice segment together with all
its dependent slice segments preceding the lost segment can be decoded correctly.
3.3.1.2
Slice Segment Subsets
Picture partitioning for the purpose of parallel processing does not necessarily
require each resulting partition to be included in an individual NAL unit. Therefore,
HEVC provides a fragmentation of coded slice data without the use of additional
header data. This is achieved by dividing the slice segment data, preferably that of
an independent slice segment, into disjoint subsets of coded CTU data such that the
union of all subsets cover the whole slice segment data. Each slice segment subset
consists of an individual byte aligned CABAC bitstream, which is terminated by
using the special terminating syntax element end_of_sub_stream_one_bit .
For all but the first substream, the entry point offsets (in bytes) are signaled by
the syntax elements entry_point_offset_minus1[i] in the corresponding
slice segment header, where the length (in bits) of the entry point offset syntax
elements is given by the prior signaled offset_len_minus1 syntax element.
Note that the first subset starts with the first byte of the slice segment data,
immediately after the slice segment header data, which is considered to be byte 0.
It is also important to understand that the entry point signaling is based on
the calculation of the byte aligned substream lengths including any potentially
necessary emulation prevention bytes. However, without any further externally
derived information of the location of the first CTU in each slice segment subset,
Search WWH ::




Custom Search