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
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.
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.