﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
44	Inconsistent implementation of zero-out for large transforms	XiangLi		"The implementations of zero-out for large transforms are not consistent in JEM-5 and earlier versions. In one place, the non-zero-out region is checked to be the top-left quarter of a block, 

#if JVET_C0046_ZO_ASSERT && JVET_C0046_ZO_ASSERT_CODED_SBK_FLAG
    else if ( (uiLog2BlockWidth + uiLog2BlockHeight) > TH_LOG2TBAREASIZE && 
              (!pcCU->getTransformSkip(compID) && !pcCU->getCUTransquantBypass(uiAbsPartIdx) ))
    {
        if ( '''iCGPosY >= (codingParameters.heightInGroups / 2)''' || i'''CGPosX >= (codingParameters.widthInGroups / 2)''' )
        {
            // coded_sbk_flag(iCGX,iCGY) shall be equal to 0
            assert(0 == uiSigCoeffGroupFlag[iCGBlkPos]);
        }
    }
#endif

While in another place, the non-zero-out region is checked to be no larger than 32x32 block, as below

'''assert((posLastX < JVET_C0024_ZERO_OUT_TH) && (posLastY < JVET_C0024_ZERO_OUT_TH));'''

Moreover, duplicated variables are declared for the thresholds, i.e., JVET_C0046_ZERO_OUT_TH and JVET_C0024_ZERO_OUT_TH.

It is proposed to make consistent implementation (always use threshold so that the max non-zero-out region is 32x32) to avoid confusion and clean redundant macros and code. A patch is attached for the proposed changes."	defect	closed	minor	HM-16.6-JEM-5.1	JEM	HM-16.6-JEM-5.0	fixed		cjianle@… H.Huang@… Ohji.Nakagami@… Takeshi.Tsukuba@… vzakharc yuwenhe jvet@…
