﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
1347	Chroma-QP-adjustment encoder granularity	karlsharman		"The parameters for chroma-QP-adjustment (not to be confused
with chroma-QP-offsets) are not searched for, but instead a
checkerboard pattern is used when this feature is enabled.

The granularity of this checkerboard pattern is down to the
size of a CU. However, chroma-qp-adjustment can be restricted
to be signalled at a higher depth. Currently, the encoder
ignores this limit when calculating the 'm_ChromaQpAdjIdc',
leading to an encoder-decoder mismatch.

  eg
    ./bin/TAppEncoderStatic -c cfg/encoder_intra_main_rext.cfg
                            -c BasketballPass.cfg
                            --SEIDecodedPictureHash=1
                            -f 1
                            --MaxCUChromaQpAdjustmentDepth=1

    will produce a stream that the decoder will mismatch.

A possible fix is to adjust the checkerboard to match the
granularity of the signalling.

  In TEncCu::xCompressCU,

    Int lgMinCuSize =
      pcSlice->getSPS()->getLog2MinCodingBlockSize();

Change to

    Int lgMinCuSize =
      pcSlice->getSPS()->getLog2MinCodingBlockSize() +
        std::max<Int>(0,
          pcSlice->getSPS()->getLog2DiffMaxMinCodingBlockSize() -
          pcSlice->getPPS()->getMaxCuChromaQpAdjDepth());

"	defect	closed	minor	HM-16.3	HM	HM-16.2	fixed		ksuehring davidf karlsharman jct-vc@…
