< Back to blog

Subblock-based Temporal Motion Vector Prediction (SbTMVP) in VVC

Denis Fedorov
Written byDenis Fedorov

Welcome to a new article about Versatile Video Coding! Previously, we explained how Affine Merge Mode works and now we’ll look at Subblock-based Temporal Motion Vector Prediction (SbTMVP). SbTMVP is a type of a merge mode too. Both these methods are connected in VVC by using the same merge context. For demonstration we will use VQ Analyzer — a bitstream analysis tool developed by ViCueSoft.

Figure 1. VQ Analyzer. Prediction mode with SbTMVP prediction blocksFigure 1. VQ Analyzer. Prediction mode with SbTMVP prediction blocks

The main idea of SbTMVP algorithm is to use motion information from the collocated picture. It is similar to TMVP in HEVC, but it works for CU-subblocks instead of whole CU. Motion vectors from the collocated picture are scaled.

Figure 2. Deriving subblocks motion vectors in SbTMVP by applying shift from A1 neighbor and scaling subblocks motion vectorsFigure 2. Deriving subblocks motion vectors in SbTMVP by applying shift from A1 neighbor and scaling subblocks motion vectors

SbTMVP algorithm is demonstrated in Figure 2. Its main steps are:

  1. Divide CU onto small subblocks, subblock size is fixed to 8x8 pixels. As in Affine Merge Mode, SbTMVP is applicable for coding units which are larger then 8x8 pixels.

  2. Derive motion shift on the collocated picture:

  • If A1 neighbor has a motion vector that uses the collocated picture as its reference picture — use it
  • Otherwise, motion shift is set to zero MV (0,0)
  1. Apply derived motion shift in the collocated picture. Shift is added to the current block’s coordinates.

  2. Get initial vector from the center of CU. it will be used as default for subblocks with unavailable motion information.

  3. Identify subblocks motion information (from the center of subblocks). If any subblock is unavailable, use default MV.

  4. Derive subblocks motion vectors and reference indices by applying scaling for corresponding subblocks. Scaling is done by using POC differences tb and td, as shown in Figure 3. Td is difference between collocated picture and reference, tb is difference between current picture and reference.

Figure 3. Illustration of motion vector scaling for TMVPFigure 3. Illustration of motion vector scaling for TMVP

When SbTMVP is enabled, the list of merge candidates consists of SbTMVP predictor and Affine Merge candidates, as shown in Figure 4. SbTMVP candidate is added to the first position of the list. The SbTVMP mode is enabled by a sequence parameter set (SPS) flag.

Figure 4. VQ Analyzer. Detail view of SbTMVP prediction unitFigure 4. VQ Analyzer. Detail view of SbTMVP prediction unit

This is all for today. In this article, we demonstrated how VQ Analyzer from ViCueSoft can visualize and display details for Subblock-based Temporal Motion Vector Prediction in Versatile Video Codec. If you have any questions or comments, please write to us directly at info@vicuesoft.com.