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

2018-04-30 Thread Pradeep Ramachandran
On Mon, Apr 30, 2018 at 5:06 PM,  wrote:

> # HG changeset patch
> # User Kavitha Sampath 
> # 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.cppThu Apr 12 16:57:19 2018 +0530
> +++ b/source/encoder/encoder.cppTue 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@videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
>

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

2018-04-30 Thread kavitha
# HG changeset patch
# User Kavitha Sampath 
# 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

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.cppThu Apr 12 16:57:19 2018 +0530
+++ b/source/encoder/encoder.cppTue 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)
# HG changeset patch
# User Kavitha Sampath 
# 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

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 2

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

2018-04-30 Thread Kavitha Sampath
On Mon, Apr 30, 2018 at 11:30 AM, Pradeep Ramachandran <
prad...@multicorewareinc.com> wrote:

>
>
> On Mon, Apr 30, 2018 at 10:39 AM, Kavitha Sampath <
> kavi...@multicorewareinc.com> wrote:
>
>>
>>
>> On Thu, Apr 26, 2018 at 2:38 PM, Bhavna Hariharan <
>> bha...@multicorewareinc.com> wrote:
>>
>>>
>>>
>>> On Thu, Apr 26, 2018 at 12:41 PM,  wrote:
>>>
 # HG changeset patch
 # User Kavitha Sampath 
 # Date 1524568273 -19800
 #  Tue Apr 24 16:41:13 2018 +0530
 # Node ID 860c3b32f59e1883b77064b9948e8e17decd4641
 # 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

 diff -r 07defe235cde -r 860c3b32f59e 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 860c3b32f59e source/encoder/encoder.cpp
 --- a/source/encoder/encoder.cppThu Apr 12 16:57:19 2018 +0530
 +++ b/source/encoder/encoder.cppTue Apr 24 16:41:13 2018 +0530
 @@ -2694,7 +2694,7 @@

  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");

>>>
>>> All the warning messages still say that scale factor is required to
>>> enable refinement methods, we can remove that.
>>>
>>
> Can you please fix these warning messages and send an updated patch?
>

Sure. I will send an updated patch

>
>
>>
>>> I see that you've enabled inter-refine, intra-refine and refine-mv
>>> without scale-factor, is there any reason for not enabling dynamic
>>> refinement without scale factor?
>>>
>>
>> Dynamic refinemement + scalefactor 0 requires some more testing. I
>> thought of sending that as a separate patch.
>>
>
> Sounds good.
>
>
>>
>>
>>>
>>>
>>>
  p->intraRefine = 0;
 @@ -2703,7 +2703,7 @@

  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");
  p->interRefine = 0;
 @@ -2737,7 +2737,7 @@

  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");
  p->mvRefine = 0;

 ___
 x265-devel mailing list
 x265-devel@videolan.org
 https://mailman.videolan.org/listinfo/x265-devel


>>>
>>
>>
>> --
>> R

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

2018-04-29 Thread Pradeep Ramachandran
On Mon, Apr 30, 2018 at 10:39 AM, Kavitha Sampath <
kavi...@multicorewareinc.com> wrote:

>
>
> On Thu, Apr 26, 2018 at 2:38 PM, Bhavna Hariharan <
> bha...@multicorewareinc.com> wrote:
>
>>
>>
>> On Thu, Apr 26, 2018 at 12:41 PM,  wrote:
>>
>>> # HG changeset patch
>>> # User Kavitha Sampath 
>>> # Date 1524568273 -19800
>>> #  Tue Apr 24 16:41:13 2018 +0530
>>> # Node ID 860c3b32f59e1883b77064b9948e8e17decd4641
>>> # 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
>>>
>>> diff -r 07defe235cde -r 860c3b32f59e 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 860c3b32f59e source/encoder/encoder.cpp
>>> --- a/source/encoder/encoder.cppThu Apr 12 16:57:19 2018 +0530
>>> +++ b/source/encoder/encoder.cppTue Apr 24 16:41:13 2018 +0530
>>> @@ -2694,7 +2694,7 @@
>>>
>>>  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");
>>>
>>
>> All the warning messages still say that scale factor is required to
>> enable refinement methods, we can remove that.
>>
>
Can you please fix these warning messages and send an updated patch?


>
>> I see that you've enabled inter-refine, intra-refine and refine-mv
>> without scale-factor, is there any reason for not enabling dynamic
>> refinement without scale factor?
>>
>
> Dynamic refinemement + scalefactor 0 requires some more testing. I thought
> of sending that as a separate patch.
>

Sounds good.


>
>
>>
>>
>>
>>>  p->intraRefine = 0;
>>> @@ -2703,7 +2703,7 @@
>>>
>>>  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");
>>>  p->interRefine = 0;
>>> @@ -2737,7 +2737,7 @@
>>>
>>>  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");
>>>  p->mvRefine = 0;
>>>
>>> ___
>>> x265-devel mailing list
>>> x265-devel@videolan.org
>>> https://mailman.videolan.org/listinfo/x265-devel
>>>
>>>
>>
>
>
> --
> Regards,
> Kavitha
>
> ___
> x265-devel mailing list
> x265-devel@videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
>
___
x265-devel mailing list
x265-devel@videolan.org
https://mailman

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

2018-04-29 Thread Kavitha Sampath
On Thu, Apr 26, 2018 at 2:38 PM, Bhavna Hariharan <
bha...@multicorewareinc.com> wrote:

>
>
> On Thu, Apr 26, 2018 at 12:41 PM,  wrote:
>
>> # HG changeset patch
>> # User Kavitha Sampath 
>> # Date 1524568273 -19800
>> #  Tue Apr 24 16:41:13 2018 +0530
>> # Node ID 860c3b32f59e1883b77064b9948e8e17decd4641
>> # 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
>>
>> diff -r 07defe235cde -r 860c3b32f59e 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 860c3b32f59e source/encoder/encoder.cpp
>> --- a/source/encoder/encoder.cppThu Apr 12 16:57:19 2018 +0530
>> +++ b/source/encoder/encoder.cppTue Apr 24 16:41:13 2018 +0530
>> @@ -2694,7 +2694,7 @@
>>
>>  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");
>>
>
> All the warning messages still say that scale factor is required to enable
> refinement methods, we can remove that.
>
> I see that you've enabled inter-refine, intra-refine and refine-mv without
> scale-factor, is there any reason for not enabling dynamic refinement
> without scale factor?
>

Dynamic refinemement + scalefactor 0 requires some more testing. I thought
of sending that as a separate patch.


>
>
>
>>  p->intraRefine = 0;
>> @@ -2703,7 +2703,7 @@
>>
>>  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");
>>  p->interRefine = 0;
>> @@ -2737,7 +2737,7 @@
>>
>>  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");
>>  p->mvRefine = 0;
>>
>> ___
>> x265-devel mailing list
>> x265-devel@videolan.org
>> https://mailman.videolan.org/listinfo/x265-devel
>>
>>
>


-- 
Regards,
Kavitha
___
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel


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

2018-04-26 Thread Bhavna Hariharan
On Thu, Apr 26, 2018 at 12:41 PM,  wrote:

> # HG changeset patch
> # User Kavitha Sampath 
> # Date 1524568273 -19800
> #  Tue Apr 24 16:41:13 2018 +0530
> # Node ID 860c3b32f59e1883b77064b9948e8e17decd4641
> # 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
>
> diff -r 07defe235cde -r 860c3b32f59e 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 860c3b32f59e source/encoder/encoder.cpp
> --- a/source/encoder/encoder.cppThu Apr 12 16:57:19 2018 +0530
> +++ b/source/encoder/encoder.cppTue Apr 24 16:41:13 2018 +0530
> @@ -2694,7 +2694,7 @@
>
>  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");
>

All the warning messages still say that scale factor is required to enable
refinement methods, we can remove that.

I see that you've enabled inter-refine, intra-refine and refine-mv without
scale-factor, is there any reason for not enabling dynamic refinement
without scale factor?



>  p->intraRefine = 0;
> @@ -2703,7 +2703,7 @@
>
>  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");
>  p->interRefine = 0;
> @@ -2737,7 +2737,7 @@
>
>  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");
>  p->mvRefine = 0;
>
> ___
> x265-devel mailing list
> x265-devel@videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
>
___
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel


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

2018-04-26 Thread kavitha
# HG changeset patch
# User Kavitha Sampath 
# Date 1524568273 -19800
#  Tue Apr 24 16:41:13 2018 +0530
# Node ID 860c3b32f59e1883b77064b9948e8e17decd4641
# 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

diff -r 07defe235cde -r 860c3b32f59e 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 860c3b32f59e source/encoder/encoder.cpp
--- a/source/encoder/encoder.cppThu Apr 12 16:57:19 2018 +0530
+++ b/source/encoder/encoder.cppTue Apr 24 16:41:13 2018 +0530
@@ -2694,7 +2694,7 @@
 
 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");
 p->intraRefine = 0;
@@ -2703,7 +2703,7 @@
 
 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");
 p->interRefine = 0;
@@ -2737,7 +2737,7 @@
 
 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");
 p->mvRefine = 0;
# HG changeset patch
# User Kavitha Sampath 
# Date 1524568273 -19800
#  Tue Apr 24 16:41:13 2018 +0530
# Node ID 860c3b32f59e1883b77064b9948e8e17decd4641
# 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

diff -r 07defe235cde -r 860c3b32f59e 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