blob: 38c9012d6bc2896996fc9e46e8b35848c6b400bc [file] [log] [blame]
#### 9.3 Segment-Based Adjustments {#h-09-03}
This subsection contains probability and value information for
implementing segment adaptive adjustments to default decoder
behavior. The data in this subsection is used in the decoding of the
ensuing per-segment information and applies to the entire frame.
When segment adaptive adjustments are enabled, each macroblock will
be assigned a segment ID. Macroblocks with the same segment ID
belong to the same segment and have the same adaptive adjustments
over default baseline values for the frame. The adjustments can be
quantizer level or loop filter strength.
The context for decoding this feature at the macroblock level is
provided by a subsection in the frame header, which contains:
1. A `segmentation_enabled` flag that enables the feature for this
frame if set to `1`, and disables it if set to `0`. The following
fields occur if the feature is enabled.
2. `L(1)` indicates if the segment map is updated for the current
frame (`update_mb_segmentation_map`).
3. `L(1)` indicates if the segment feature data items are updated for
the current frame (`update_segment_feature_data`).
4. If Item 3 above (`update_segment_feature_data`) is `1`, the following
fields occur:
a. `L(1)`, the mode of segment feature data
(`segment_feature_mode`), can be absolute-value mode (`0`) or
delta value mode (`1`).
b. Segment feature data items are decoded segment by segment for
each segment feature. For every data item, a one-bit flag
indicates whether the item is `0`, or a non-zero value to be
decoded. If the value is non-zero, then the value is decoded
as a magnitude `L(n)`, followed by a one-bit sign (`L(1)` -- `0`
for positive and `1` for negative). The length `n` can be looked
up from a pre-defined length table for all feature data.
5. If the `L(1)` flag as noted in Item 2 above is set to `1`, the
probabilities of the decoding tree for the segment map are
decoded from the bitstream. Each probability is decoded with a
one-bit flag indicating whether the probability is the default
value of `255` (flag is set to `0`), or an 8-bit value, `L(8)`, from
the bitstream.
The layout and semantics supporting this feature at the macroblock
level are described in Section 10.