[x265] [PATCH 2 of 4] limit TU : use cbf and quantization coefficients to limit recursion

Deepthi Nandakumar deepthipnandakumar at gmail.com
Wed Oct 12 06:21:58 CEST 2016


Some more points.

1. Is there anything to prevent limit-tu 1 and 2 being used together, say
as limit-tu 3?
2. It's recommended that limit-tu is conservative when performing early
skip for TU recursion. There have been suspicions that large TUs are
responsible for smoothening artifacts, and if limit-tu is too aggressive,
it could definitely worsen this.


On Mon, Oct 10, 2016 at 11:46 AM, Deepthi Nandakumar <
deepthipnandakumar at gmail.com> wrote:

> Is this condition ever satisfied? Minimum value of a coeff, to be counted
> in numSig is 1 (since it's uint16).
>
> On Sat, Oct 8, 2016 at 5:07 PM, Bhavna Hariharan <
> bhavna at multicorewareinc.com> wrote:
>
>> Hi Deepthi,
>>
>> On Fri, Oct 7, 2016 at 1:17 PM, Deepthi Nandakumar <
>> deepthipnandakumar at gmail.com> wrote:
>>
>>> Kavitha/Bhavana, excellent job! The test metrics look pretty good.
>>>
>>>
>>>
>>> On Tue, Oct 4, 2016 at 2:50 PM, <kavitha at multicorewareinc.com> wrote:
>>>
>>>> # HG changeset patch
>>>> # User Bhavna Hariharan <bhavna at multicorewareinc.com>
>>>> # Date 1474620761 -19800
>>>> #      Fri Sep 23 14:22:41 2016 +0530
>>>> # Node ID c018bc0ffc156902b1a9a13ecd6996d30d7403df
>>>> # Parent  c10ef341f4e65883243f78040f52ed06ace99535
>>>> limit TU : use cbf and quantization coefficients to limit recursion
>>>>
>>>> diff -r c10ef341f4e6 -r c018bc0ffc15 source/encoder/search.cpp
>>>> --- a/source/encoder/search.cpp Tue Oct 04 13:27:48 2016 +0530
>>>> +++ b/source/encoder/search.cpp Fri Sep 23 14:22:41 2016 +0530
>>>> @@ -3194,6 +3194,8 @@
>>>>                  singlePsyEnergy[TEXT_LUMA][0] = nonZeroPsyEnergyY;
>>>>                  cbfFlag[TEXT_LUMA][0] = !!numSigTSkipY;
>>>>                  bestTransformMode[TEXT_LUMA][0] = 1;
>>>> +                if (m_param->limitTU)
>>>> +                    numSig[TEXT_LUMA][0] = numSigTSkipY;
>>>>                  uint32_t numCoeffY = 1 << (log2TrSize << 1);
>>>>                  memcpy(coeffCurY, m_tsCoeff, sizeof(coeff_t) *
>>>> numCoeffY);
>>>>                  primitives.cu[partSize].copy_ss(curResiY,
>>>> strideResiY, m_tsResidual, trSize);
>>>> @@ -3331,6 +3333,21 @@
>>>>              fullCost.rdcost = m_rdCost.calcPsyRdCost(fullCost.distortion,
>>>> fullCost.bits, fullCost.energy);
>>>>          else
>>>>              fullCost.rdcost = m_rdCost.calcRdCost(fullCost.distortion,
>>>> fullCost.bits);
>>>> +
>>>> +        if (m_param->limitTU && bCheckSplit)
>>>> +        {
>>>> +            // Stop recursion if the TU's energy level is minimal
>>>> +            if (cbfFlag[TEXT_LUMA][0] == 0)
>>>> +                bCheckSplit = false;
>>>>
>>>
>>> Agreed.
>>>
>>> +            else if (numSig[TEXT_LUMA][0] < (cuGeom.numPartitions / 16))
>>>> +            {
>>>> +                uint32_t energy = 0;
>>>> +                for (uint32_t i = 0; i < cuGeom.numPartitions; i++)
>>>> +                    energy += abs(coeffCurY[i]);
>>>> +                if (energy < numSig[TEXT_LUMA][0])
>>>>
>>>
>>> One question, why are we comparing actual coefficient values to number
>>> of significant coefficients?
>>>
>>
>> We want to stop recursion when the energy of TU is low. If the value of
>> each of the coefficients is minimal (close to 1), the energy will be less
>> than the number of coefficients.
>>
>>
>>>
>>>> +                    bCheckSplit = false;
>>>> +            }
>>>> +        }
>>>>      }
>>>>
>>>>      // code sub-blocks
>>>> _______________________________________________
>>>> x265-devel mailing list
>>>> x265-devel at videolan.org
>>>> https://mailman.videolan.org/listinfo/x265-devel
>>>>
>>>
>>>
>>>
>>> --
>>> Deepthi
>>>
>>> _______________________________________________
>>> x265-devel mailing list
>>> x265-devel at videolan.org
>>> https://mailman.videolan.org/listinfo/x265-devel
>>
>>
>>
>> Regards,
>>
>> Bhavna Hariharan
>>
>>
>> _______________________________________________
>> x265-devel mailing list
>> x265-devel at videolan.org
>> https://mailman.videolan.org/listinfo/x265-devel
>>
>>
>
>
> --
> Deepthi
>



-- 
Deepthi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20161012/d148626c/attachment.html>


More information about the x265-devel mailing list