Opened 4 years ago

Closed 4 years ago

#1247 closed defect (fixed)

Max DPB size (A.4.2)

Reported by: fbossen Owned by:
Priority: minor Milestone:
Component: spec Version: VVC D10 vE
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

In A.4.2, MaxDpbSize is derived as:

if( PicSizeMaxInSamplesY <= ( MaxLumaPs >> 2 ) )

MaxDpbSize = Min( 4 * maxDpbPicBuf, 16 )

else if( PicSizeMaxInSamplesY <= ( MaxLumaPs >> 1 ) )

MaxDpbSize = Min( 2 * maxDpbPicBuf, 16 )

else if( PicSizeMaxInSamplesY <= ( ( 3 * MaxLumaPs ) >> 2 ) )

MaxDpbSize = Min( ( 4 * maxDpbPicBuf ) / 3, 16 )

else

MaxDpbSize = maxDpbPicBuf

There are more cases here than necessary since the first 2 cases result in the same value of MaxDpbSize (16). The equation can thus be simplified to:

if( 2 * PicSizeMaxInSamplesY <= MaxLumaPs )

MaxDpbSize = 2 * maxDpbPicBuf

else if( 4 * PicSizeMaxInSamplesY <= 3 * MaxLumaPs )

MaxDpbSize = 4 * maxDpbPicBuf / 3

else

MaxDpbSize = maxDpbPicBuf

The thresholds were originally designed for maxDpbPicBuf = 6, where MaxDpbSize could be equal to 6, 8, 12 or 16. In VVC maxDpbPicBuf has been increased to 8, which results in MaxDpbSize being equal to 8, 10 or 16. It is unclear whether such behaviour is intentional. Furthermore the comparison

else if( 4 * PicSizeMaxInSamplesY <= 3 * MaxLumaPs )

unnecessarily excludes values of PicSizeMaxInSampleY for the case where MaxDpbSize is 10 (which is 5/4 of maxDpbPicBuf). The equation could thus be changed to:

if( 2 * PicSizeMaxInSamplesY <= MaxLumaPs )

MaxDpbSize = 2 * maxDpbPicBuf

else if( 5 * PicSizeMaxInSamplesY <= 4 * MaxLumaPs )

MaxDpbSize = 5 * maxDpbPicBuf / 4

else

MaxDpbSize = maxDpbPicBuf

Alternatively, to preserve the set of MaxDpbSize values supported by previous standards (8, 12, 16), the equation could be changed to:

if( 2 * PicSizeMaxInSamplesY <= MaxLumaPs )

MaxDpbSize = 2 * maxDpbPicBuf

else if( 3 * PicSizeMaxInSamplesY <= 2 * MaxLumaPs )

MaxDpbSize = 3 * maxDpbPicBuf / 2

else

MaxDpbSize = maxDpbPicBuf

The value 12 of MaxDpbSize may be of particular interest in scalable streams. For example, a 2-layer stream using our CTC RA configuration would require that number of entries in the DPB.

Change history (4)

comment:1 Changed 4 years ago by yk

Thanks Frank! Good analysis. It seems that you are right, but I did not have time to verify it yet myself.

It'd be great if someone else who is familiar with this equation can confirm.

comment:2 Changed 4 years ago by hendry197

The equations and numbers are correct to me.

I have no strong opinion about the last suggestion to preserve the set of MaxDpbSize values to be 8, 12, and 16. However, it sounds good to me since they have regular diff of 4.

If there is no concern from HW implementation (as this is really about the cost of memory, IMO), I think we should do it.

comment:3 Changed 4 years ago by bheng

The (8, 12, 16) suggestion seems more evenly distributed, without increasing the total memory requirement above 8 frames @ MaxLumaPs, so I would vote for that suggestion as well.

comment:4 Changed 4 years ago by bbross

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

Thanks for brining that up and confirming. Fixed for JVET-S2001-vG.

Note: See TracTickets for help on using tickets.