[x265] [PATCH 3 of 4 x265] analysis-save/load: Validate cu-tree info only at reuse-level 10

Kavitha Sampath kavitha at multicorewareinc.com
Wed Apr 15 09:51:01 CEST 2020


On Tue, Apr 14, 2020 at 9:02 PM Aruna Matheswaran <
aruna at multicorewareinc.com> wrote:

>
>
> On Tue, Apr 14, 2020 at 7:38 PM Kavitha Sampath <
> kavitha at multicorewareinc.com> wrote:
>
>>
>>
>> On Tue, Mar 31, 2020 at 11:25 AM Aruna Matheswaran <
>> aruna at multicorewareinc.com> wrote:
>>
>>> # HG changeset patch
>>> # User Aruna Matheswaran <aruna at multicorewareinc.com>
>>> # Date 1582707110 -19800
>>> #      Wed Feb 26 14:21:50 2020 +0530
>>> # Node ID 7ae7c9767f14b7d093c2023235066b370aecc4ce
>>> # Parent  74170d9678e1a7f5f57b20c8404f8601814254d8
>>> analysis-save/load: Validate cu-tree info only at reuse-level 10
>>>
>>> diff -r 74170d9678e1 -r 7ae7c9767f14 source/encoder/encoder.cpp
>>> --- a/source/encoder/encoder.cpp        Wed Feb 19 15:13:05 2020 +0530
>>> +++ b/source/encoder/encoder.cpp        Wed Feb 26 14:21:50 2020 +0530
>>> @@ -3694,20 +3694,6 @@
>>>      if (p->analysisLoad && !p->analysisLoadReuseLevel)
>>>          p->analysisLoadReuseLevel = 5;
>>>
>>> -    if ((p->bAnalysisType == DEFAULT) && p->rc.cuTree)
>>> -    {
>>> -        if (p->analysisSaveReuseLevel && p->analysisSaveReuseLevel < 10)
>>> -        {
>>> -            x265_log(p, X265_LOG_WARNING, "cu-tree works only with
>>> analysis-save-reuse-level 10, Disabling cu-tree\n");
>>> -            p->rc.cuTree = 0;
>>> -        }
>>> -        if (p->analysisLoadReuseLevel && p->analysisLoadReuseLevel < 10)
>>> -        {
>>> -            x265_log(p, X265_LOG_WARNING, "cu-tree works only with
>>> analysis-load-reuse-level 10, Disabling cu-tree\n");
>>> -            p->rc.cuTree = 0;
>>> -        }
>>> -    }
>>> -
>>>
>> [KS] If reuse level is <10 we no longer throw warning/disable cutree. We
>> neither reuse cutree offsets. I don't think that is expected.
>>
> [AM] Will enable the flow to reuse cu-tree offsets at reuse-levels > 1
>
>> [KS] As you are enabling cutree for other reuse levels, ensure to add
>> this test case to our regression
>>
> [AM] ok.
>
>>
>>      if ((p->analysisLoad || p->analysisSave) &&
>>> (p->bDistributeModeAnalysis || p->bDistributeMotionEstimation))
>>>      {
>>>          x265_log(p, X265_LOG_WARNING, "Analysis load/save options
>>> incompatible with pmode/pme, Disabling pmode/pme\n");
>>> @@ -5039,13 +5025,13 @@
>>>      X265_PARAM_VALIDATE(saveParam->lookaheadDepth, sizeof(int), 1,
>>> &m_param->lookaheadDepth, rc - lookahead);
>>>      X265_PARAM_VALIDATE(saveParam->chunkStart, sizeof(int), 1,
>>> &m_param->chunkStart, chunk-start);
>>>      X265_PARAM_VALIDATE(saveParam->chunkEnd, sizeof(int), 1,
>>> &m_param->chunkEnd, chunk-end);
>>> -
>>> X265_PARAM_VALIDATE(saveParam->cuTree,sizeof(int),1,&m_param->rc.cuTree,
>>> cutree - offset);
>>>      X265_PARAM_VALIDATE(saveParam->ctuDistortionRefine, sizeof(int), 1,
>>> &m_param->ctuDistortionRefine, ctu - distortion);
>>>
>>>      int sourceHeight, sourceWidth;
>>>      if (writeFlag)
>>>      {
>>>          X265_PARAM_VALIDATE(saveParam->analysisReuseLevel, sizeof(int),
>>> 1, &m_param->analysisSaveReuseLevel, analysis - save - reuse - level);
>>> +        X265_PARAM_VALIDATE(saveParam->cuTree, sizeof(int), 1,
>>> &m_param->rc.cuTree, cutree-offset);
>>>          sourceHeight = m_param->sourceHeight -
>>> m_conformanceWindow.bottomOffset;
>>>          sourceWidth = m_param->sourceWidth -
>>> m_conformanceWindow.rightOffset;
>>>          X265_PARAM_VALIDATE(saveParam->sourceWidth, sizeof(int), 1,
>>> &sourceWidth, res-width);
>>> @@ -5080,6 +5066,15 @@
>>>              return -1;
>>>          }
>>>
>>> +        int bcutree;
>>> +        X265_FREAD(&bcutree, sizeof(int), 1, m_analysisFileIn,
>>> &(saveParam->cuTree));
>>> +        if (loadLevel == 10 && m_param->rc.cuTree && (!bcutree ||
>>> saveLevel < 2))
>>> +        {
>>> +            x265_log(NULL, X265_LOG_ERROR, "Error reading cu-tree info.
>>> Disabling cutree offsets. \n");
>>> +            m_param->rc.cuTree = 0;
>>> +            return -1;
>>> +        }
>>> +
>>>
>> [KS] Isn't this applicable to all reuse levels? As I see that we write
>> and read cutree offsets for all levels
>>
> [AM] Right now cu-tree reuse is allowed only at reuse-level 10, but
> sharing is enabled at reuse-levels > 1.
> I'll update this check while enabling the cu-tree reuse at reuse-levels >
> 1.
>
>>
>>
>>>          bool error = false;
>>>          int curSourceHeight = m_param->sourceHeight -
>>> m_conformanceWindow.bottomOffset;
>>>          int curSourceWidth = m_param->sourceWidth -
>>> m_conformanceWindow.rightOffset;
>>>
>>  [KS] Have you tested this patch disabling lookahead?
>>
> [AM] No, I didn't check as it is a param only option.
> Disabling lookahead in load will restrict reuse-level 1 from enabling
> cu-tree. Should we extent cu-tree sharing to reuse-level 1 given that
> cu-tree is part of lookahead info?
>
[KS] If we are disabling lookahead and enabling cutree/vbv then we should
be sharing cutree/vbv info IMO

> _______________________________________________
>>> x265-devel mailing list
>>> x265-devel at videolan.org
>>> https://mailman.videolan.org/listinfo/x265-devel
>>>
>>
>>
>> --
>> Regards,
>> Kavitha
>> _______________________________________________
>> x265-devel mailing list
>> x265-devel at videolan.org
>> https://mailman.videolan.org/listinfo/x265-devel
>>
>
>
> --
> Regards,
> *Aruna Matheswaran,*
> Video Codec Engineer,
> Media & AI analytics BU,
>
>
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>


-- 
Regards,
Kavitha
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20200415/e4ad4df5/attachment.html>


More information about the x265-devel mailing list