[x265] [PATCH] scaling: allow refinement of inter/intra frames when scalefactor is zero

Pradeep Ramachandran pradeep at multicorewareinc.com
Mon Apr 30 13:53:01 CEST 2018


On Mon, Apr 30, 2018 at 5:06 PM, <kavitha at multicorewareinc.com> wrote:

> # HG changeset patch
> # User Kavitha Sampath <kavitha at multicorewareinc.com>
> # Date 1524568273 -19800
> #      Tue Apr 24 16:41:13 2018 +0530
> # Node ID 1982e4a9bbd06e89220f0c3917a640c1e482cdd6
> # Parent  07defe235cde1949c55464952ee1dbdc10baf5e4
> scaling: allow refinement of inter/intra frames when scalefactor is zero
>
> Also disable analysis of CU with min-cu size when scale factor is zero
>

Pushed to default and merged with stable; this fix will be a part of the
imminent v3.0 release.
Thanks.


>
> diff -r 07defe235cde -r 1982e4a9bbd0 source/encoder/analysis.cpp
> --- a/source/encoder/analysis.cpp       Thu Apr 12 16:57:19 2018 +0530
> +++ b/source/encoder/analysis.cpp       Tue Apr 24 16:41:13 2018 +0530
> @@ -523,7 +523,7 @@
>      int split = 0;
>      if (m_param->intraRefine && m_param->intraRefine != 4)
>      {
> -        split = ((cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param->minCUSize]
> + 1)) && bDecidedDepth);
> +        split = m_param->scaleFactor && ((cuGeom.log2CUSize ==
> (uint32_t)(g_log2Size[m_param->minCUSize] + 1)) && bDecidedDepth);
>          if (cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param->minCUSize])
> && !bDecidedDepth)
>              bAlreadyDecided = false;
>      }
> @@ -2420,7 +2420,7 @@
>          m_refineLevel = m_param->interRefine;
>      else
>          m_refineLevel = m_frame->m_classifyFrame ? 1 : 3;
> -    int split = (m_refineLevel && cuGeom.log2CUSize ==
> (uint32_t)(g_log2Size[m_param->minCUSize] + 1) && bDecidedDepth);
> +    int split = (m_param->scaleFactor && m_refineLevel &&
> cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param->minCUSize] + 1) &&
> bDecidedDepth);
>      td.split = split;
>
>      if (bDecidedDepth)
> @@ -2494,7 +2494,7 @@
>                              mode.cu.m_mvd[list][pu.puAbsPartIdx] =
> mode.cu.m_mv[list][pu.puAbsPartIdx] - mode.amvpCand[list][ref][mode.
> cu.m_mvpIdx[list][pu.puAbsPartIdx]]/*mvp*/;
>                          }
>                      }
> -                    else if(m_param->scaleFactor)
> +                    else
>                      {
>                          MVField candMvField[MRG_MAX_NUM_CANDS][2]; //
> double length for mv of both lists
>                          uint8_t candDir[MRG_MAX_NUM_CANDS];
> diff -r 07defe235cde -r 1982e4a9bbd0 source/encoder/encoder.cpp
> --- a/source/encoder/encoder.cpp        Thu Apr 12 16:57:19 2018 +0530
> +++ b/source/encoder/encoder.cpp        Tue Apr 24 16:41:13 2018 +0530
> @@ -2694,27 +2694,27 @@
>
>      if (p->intraRefine)
>      {
> -        if (!p->analysisLoad || p->analysisReuseLevel < 10 ||
> !p->scaleFactor)
> +        if (!p->analysisLoad || p->analysisReuseLevel < 10)
>          {
> -            x265_log(p, X265_LOG_WARNING, "Intra refinement requires
> analysis load, analysis-reuse-level 10, scale factor. Disabling intra
> refine.\n");
> +            x265_log(p, X265_LOG_WARNING, "Intra refinement requires
> analysis load, analysis-reuse-level 10. Disabling intra refine.\n");
>              p->intraRefine = 0;
>          }
>      }
>
>      if (p->interRefine)
>      {
> -        if (!p->analysisLoad || p->analysisReuseLevel < 10 ||
> !p->scaleFactor)
> +        if (!p->analysisLoad || p->analysisReuseLevel < 10)
>          {
> -            x265_log(p, X265_LOG_WARNING, "Inter refinement requires
> analysis load, analysis-reuse-level 10, scale factor. Disabling inter
> refine.\n");
> +            x265_log(p, X265_LOG_WARNING, "Inter refinement requires
> analysis load, analysis-reuse-level 10. Disabling inter refine.\n");
>              p->interRefine = 0;
>          }
>      }
>
>      if (p->bDynamicRefine)
>      {
> -        if (!p->analysisLoad || p->analysisReuseLevel < 10 ||
> !p->scaleFactor)
> +        if (!p->analysisLoad || p->analysisReuseLevel < 10)
>          {
> -            x265_log(p, X265_LOG_WARNING, "Dynamic refinement requires
> analysis load, analysis-reuse-level 10, scale factor. Disabling dynamic
> refine.\n");
> +            x265_log(p, X265_LOG_WARNING, "Dynamic refinement requires
> analysis load, analysis-reuse-level 10. Disabling dynamic refine.\n");
>              p->bDynamicRefine = 0;
>          }
>          if (p->interRefine)
> @@ -2737,9 +2737,9 @@
>
>      if (p->mvRefine)
>      {
> -        if (!p->analysisLoad || p->analysisReuseLevel < 10 ||
> !p->scaleFactor)
> +        if (!p->analysisLoad || p->analysisReuseLevel < 10)
>          {
> -            x265_log(p, X265_LOG_WARNING, "MV refinement requires
> analysis load, analysis-reuse-level 10, scale factor. Disabling MV
> refine.\n");
> +            x265_log(p, X265_LOG_WARNING, "MV refinement requires
> analysis load, analysis-reuse-level 10. Disabling MV refine.\n");
>              p->mvRefine = 0;
>          }
>          else if (p->interRefine >= 2)
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20180430/407188fa/attachment-0001.html>


More information about the x265-devel mailing list