Opened 9 years ago

Closed 9 years ago

#496 closed defect (fixed)

Long-term picture variable PocLtCurr is set incorrectly when delta_poc_msb_present_flag==1

Reported by: rickard Owned by: rickard
Priority: major Milestone: D7
Component: Text Version: D6 (H1003) dI/dJ/dK
Keywords: Cc: bbross, wjhan, jct-vc@…

Description

Current decoding process for reference picture set contains the following:

for( i = 0, j = 0, k = 0; i < num_long_term_pics; i++ )

if( delta_poc_msb_present_flag[ i ] )

if( used_by_curr_pic_lt_flag[ i ] )

PocLtCurr[ j++ ] = ( ( PicOrderCntVal - DeltaPocLt[ i ] + MaxPicOrderCntLsb ) % MaxPicOrderCntLsb ) - ( DeltaPocMSBCycleLt[ i ] )* MaxPicOrderCntLsb

else

PocLtFoll[ k++ ] = ( ( PicOrderCntVal - DeltaPocLt[ i ] + MaxPicOrderCntLsb ) % MaxPicOrderCntLsb ) - ( DeltaPocMSBCycleLt[ i ] ) * MaxPicOrderCntLsb

Later PocLtCurr[ i ] is compared with PicOrderCntVal.
The decoding process text for reference picture sets should be changed to:

for( i = 0, j = 0, k = 0; i < num_long_term_pics; i++ )

if( delta_poc_msb_present_flag[ i ] )

if( used_by_curr_pic_lt_flag[ i ] )

PocLtCurr[ j++ ] = PicOrderCntVal - DeltaPocLt[ i ] - DeltaPocMSBCycleLt[ i ] * MaxPicOrderCntLsb

else

PocLtFoll[ k++ ] = PicOrderCntVal - DeltaPocLt[ i ] - DeltaPocMSBCycleLt[ i ] * MaxPicOrderCntLsb

Change History (6)

comment:1 Changed 9 years ago by DefaultCC Plugin

  • Cc bbross wjhan jct-vc@… added

comment:2 Changed 9 years ago by ksuehring

I think the modulo operation takes care of the delta_poc_lsb_lt[0] and delta_poc_msb_cycle_lt_minus1[0] equal to 0 case. This will set PocLtxxx[0] to (PicOrderCntVal - MaxPicOrderCntLsb) instead of PicOrderCntVal, which should not be allowed.

This seems to be a difficult corner case. I think adding a "-1" to the new equations could fix that problem and would help to simplify the whole process.

Btw, the software seems to always use a modulo operation for marking which looks wrong.

comment:3 Changed 9 years ago by ksuehring

The software related comment has been resolved in issue #507

After further checking I found that my previous comment is wrong. Due to the minus1 coding of the POC cycle, the zero-case cannot happen.

But I still think the new equations are more restrictive. The target long-term picture needs to have at least a MaxPicOrderCntLsb POC difference from the current picture. This might be a problem of you have a long-term reference with a POC value larger than the current picture and another one with the same LSB one POC cycle away.

comment:4 Changed 9 years ago by ksuehring

  • Owner changed from bbross to rickard
  • Status changed from new to assigned

It was confirmed (in offline discussion) that the modified equations work and are the ones that have been implemented and tested.
The corner case in JCTVC-I0234 is related. The constraint documented in the meeting notes requires changing the syntax of delta_poc_msb_cycle_lt_minus1. When adding these changes to the draft, the equations mentioned above should also be updated.

comment:5 Changed 9 years ago by bbross

  • Milestone set to D7

In d7 HLS text DeltaPocLt does not exists anymore. So the issue should be fixed by integration of:

  • Incorporated a fix for an unhandled LTRP case, a fix to the POC MSB cycle coding, coding of LTRP POC LSB directly as u(v), and no MVP scaling for LTRPs (JCTVC-I0234, JCTVC-I0340, JCTVC-I0422)

comment:6 Changed 9 years ago by bbross

  • Resolution set to fixed
  • Status changed from assigned to closed

Fixed in JCTVC-I1003 d4.

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

  • Benjamin Bross(Subscriber, Participant)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Participant, Always)
  • Rickard Sjoberg(Reporter, Owner)
  • Woo-Jin Han(Subscriber)