Opened 11 years ago

Closed 11 years ago

#925 closed defect (fixed)

bug in derivation of temporal motion vectors for merge mode

Reported by: stefane Owned by:
Priority: minor Milestone: HM-9.2
Component: HM Version: HM-9.1
Keywords: Cc: fbossen, ksuehring, davidf, jct-vc@…

Description

According to the spec, section 8.5.3.1.1 Derivation process for luma motion vectors for merge mode:

  1. The derivation process for temporal luma motion vector prediction in subclause 8.5.3.1.7 is invoked with luma location ( xP, yP ), the width and the height of the luma prediction block nPbW and nPbH, and refIdxLXCol as the inputs and the output being the availability flags availableFlagLXCol and the temporal motion vectors mvLXCol (with X being 0 or 1, respectively). The variables availableFlagCol and predFlagLXCol (with X being 0 or 1, respectively) are derived as specified below.

, 8.5.3.1.7 is invoked independently and unconditionally for both L0 and L1.

But in TComDataCU::getInterMergeCandidates(), 8.5.3.1.7 is only invoked for L1 if availableFlagL0Col is true:

    bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_0, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx );
    if( bExistMV == false )
    {
      bExistMV = xGetColMVP( REF_PIC_LIST_0, uiCurLCUIdx, uiPartIdxCenter,  cColMv, iRefIdx );
    }
    if( bExistMV ) // <- only if availableFlagL0Col is true
    {
      // ...
      if ( getSlice()->isInterB() )
      {       
        iRefIdx = 0;
        bExistMV = uiLCUIdx >= 0 && xGetColMVP( REF_PIC_LIST_1, uiLCUIdx, uiAbsPartAddr, cColMv, iRefIdx);

The inter prediction mode for temporal merge mode motion vectors can therefore only be Pred_L0 or Pred_BI but never Pred_L1.

Change History (5)

comment:1 Changed 11 years ago by DefaultCC Plugin

  • Cc fbossen ksuehring davidf jct-vc@… added

comment:2 Changed 11 years ago by fbossen

You say: The inter prediction mode for temporal merge mode motion vectors can therefore only be Pred_L0 or Pred_BI but never Pred_L1.
Can you provide an example where the text would produce the Pred_L1 case? If there is no such case, then there is no bug.

comment:3 Changed 11 years ago by Vadim

According to my understanding, TMVP can be Pred_L1.

8.5.3.1.7 Derivation process for temporal luma motion vector prediction

...
– If LongTermRefPic( currPic, currPb, refIdxLX, LX ) is not equal to LongTermRefPic( colPic, colPb, refIdxCol, listCol ), both components of mvLXCol are set equal to 0 and availableFlagLXCol is set equal to 0.
...

So according to this check, MV from L0 can be unavailable. If this is correct, we need to fix TMVP derivation in the software.

comment:4 Changed 11 years ago by stefane

Yes, the case occurs when the collocated MV for L0 is rejected because of reference picture marking mismatch, as quoted by Vadim.

comment:5 Changed 11 years ago by fbossen

  • Milestone set to HM-9.2
  • Resolution set to fixed
  • Status changed from new to closed

Fixed in r3278

Note: See TracTickets for help on using tickets.

This list contains all users that will be notified about changes made to this ticket.

These roles will be notified: Reporter, Owner, Subscriber, Participant

  • David Flynn(Subscriber)
  • Frank Bossen(Subscriber, Participant)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Subscriber, Always)
  • Vadim Seregin(Participant)