﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
980	Issue on CCALF BD estimation	XueweiMeng		"In VTM-8.0 CCALF function ""deriveCcAlfFilter"", line 3855 to 3865


{{{
          if (referencingExistingAps)
          {
            curTotalRate += 1 + 3 + lengthUvlc(ccAlfFilterCount - 1); // +1 for enable flag, +3 APS ID in slice header
          }
          else
          {
            curTotalRate += getCoeffRateCcAlf(ccAlfFilterCoeff, ccAlfFilterIdxEnabled, ccAlfFilterCount, compID) + 1 + lengthUvlc(ccAlfFilterCount - 1)
            + 7;   // +1 for the enable flag, +7 two 3-bit APS ID, one in slice header/one in APS, a 1-bit
            // new filter flags (ignore shared cost such as other new-filter flags/NALU header/RBSP
            // terminating bit/byte alignment bits)
          }
}}}

For CCALF, if referencingExistingAps, ccAlfFilterCount will not be signaled. Otherwise, one ccAlfFilterCount will be signaled per chroma component. So I think the estimation of curTotalRate should be as follows,

{{{
if (referencingExistingAps)
          {
            curTotalRate += 1 + 3; // +1 for enable flag, +3 APS ID in slice header
          }
          else
          {
            curTotalRate += getCoeffRateCcAlf(ccAlfFilterCoeff, ccAlfFilterIdxEnabled, ccAlfFilterCount, compID) + 1
            + 7;   // +1 for the enable flag, +7 two 3-bit APS ID, one in slice header/one in APS, a 1-bit
            // new filter flags (ignore shared cost such as other new-filter flags/NALU header/RBSP
            // terminating bit/byte alignment bits)
          }
}}}


And I wonder why there are two APS IDs needed to be signaled when not referencingExistingAps. And if the APS ID in APS should be signaled, the bit is 5, not 3.

If needed, I will prepare a merge request soon."	defect	closed	minor		VTM	VTM-8.0	fixed		ksuehring XiangLi fbossen jvet@…
