How AV1 NEWMV Mode Signals Displacement Vectors
This article provides an overview of how the AOMedia Video 1 (AV1)
video codec signals displacement vectors—commonly known as motion
vectors—when using the NEWMV prediction mode. It details
the process of establishing a reference predictor, calculating the
motion vector difference, encoding the directional components through
structured syntax elements, and applying adaptive sub-pixel
precision.
In AV1 inter-frame prediction, blocks can either inherit motion
vectors directly from spatial and temporal neighbors or signal updated
motion information. The NEWMV mode indicates that the
current block requires an explicitly transmitted displacement vector
rather than fully reusing an existing vector from adjacent blocks.
Motion Vector Predictor Selection
Rather than encoding the full, absolute coordinates of a displacement vector, AV1 encodes a motion vector difference (MVD). To compute this difference, the decoder first determines a Motion Vector Predictor (MVP):
- Candidate List Generation: AV1 scans spatial neighbors (left, above, and corners) as well as temporal collocated blocks to construct a sorted list of candidate motion vectors.
- Predictor Indexing: For
NEWMV, the encoder signals an index into this candidate stack (often the primary candidateref_mv[0], or selected via reference indexing if multiple candidates exist). - Base Vector: The selected candidate serves as the base vector (\(\text{MVP}\)), against which the delta vector (\(\text{MVD}\)) is applied: \[\text{MV} = \text{MVP} + \text{MVD}\]
Syntax Decomposition of the Motion Vector Difference
The displacement difference \(\text{MVD}\) is split into horizontal and vertical components (\(MVD_x\) and \(MVD_y\)). Each component is signaled independently using an entropy-coded syntax structure designed to maximize compression efficiency:
- Joint Indicator: AV1 can signal whether one or both directional components contain non-zero displacement offsets.
- Class Syntax: The absolute magnitude of the offset is categorized into discrete classes (Class 0 through Class 10). Class 0 represents fractional and single-pixel offsets, while higher classes correspond to exponentially larger motion ranges.
- Class Bits and Offset: For classes higher than Class 0, intermediate bits refine the exact integer magnitude within the selected class range.
- Fractional Bits: Depending on the motion precision mode, additional bits specify the sub-pixel fractional offset (e.g., half-pel, quarter-pel, or eighth-pel displacement).
- Sign Bit: A single bit signals the direction (positive or negative) along the corresponding axis.
Adaptive Motion Vector Precision
AV1 supports multiple motion vector precision levels at the frame and block levels, including 1/8-pel, 1/4-pel, 1/2-pel, and integer-pel precision. When lower precision modes (such as integer-pel) are active, fractional syntax elements are omitted entirely from the bitstream, reducing bit overhead for scenes with large, uniform motion or low detail.
Compound Prediction Handling
In compound prediction modes involving two reference frames, AV1
extends NEWMV to compound variants such as
NEAR_NEWMV, NEW_NEARMV, and
NEW_NEWMV.
- In
NEAR_NEWMVorNEW_NEARMV, only one reference frame receives an explicitly signaled \(\text{MVD}\), while the other uses a predicted vector directly. - In
NEW_NEWMV, the bitstream encodes two independent \(\text{MVD}\) structures—one for Reference Frame 0 and one for Reference Frame 1—each derived from its respective motion vector predictor stack.