Re: [x265] [PATCH x265] Use the data structure of analysis-save/load for multi-pass-opt-analysis/multi-pass-opt-distortion

2018-06-11 Thread Ashok Kumar Mishra
On Fri, Jun 8, 2018 at 5:44 PM,  wrote:

> # HG changeset patch
> # User Aruna Matheswaran 
> # Date 1526883919 -19800
> #  Mon May 21 11:55:19 2018 +0530
> # Node ID 00eec4796d233e72d6344c7f4c9d5c69a9c55501
> # Parent  ed853c4af6710a991d0cdf4bf68e00fe32edaacb
> Use the data structure of analysis-save/load for
> multi-pass-opt-analysis/multi-pass-opt-distortion.
>
> diff -r ed853c4af671 -r 00eec4796d23 source/common/frame.cpp
> --- a/source/common/frame.cpp   Fri Apr 06 14:35:00 2018 +0530
> +++ b/source/common/frame.cpp   Mon May 21 11:55:19 2018 +0530
> @@ -83,7 +83,7 @@
>  m_analysisData.wt = NULL;
>  m_analysisData.intraData = NULL;
>  m_analysisData.interData = NULL;
> -m_analysis2Pass.analysisFramedata = NULL;
> +m_analysisData.distortionData = NULL;
>  }
>
>  if (param->bDynamicRefine)
> diff -r ed853c4af671 -r 00eec4796d23 source/common/frame.h
> --- a/source/common/frame.h Fri Apr 06 14:35:00 2018 +0530
> +++ b/source/common/frame.h Mon May 21 11:55:19 2018 +0530
> @@ -109,7 +109,6 @@
>  Frame* m_prev;
>  x265_param*m_param;  // Points to the latest
> param set for the frame.
>  x265_analysis_data m_analysisData;
> -x265_analysis_2Passm_analysis2Pass;
>  RcStats*   m_rcData;
>
>  Event  m_copyMVType;
> diff -r ed853c4af671 -r 00eec4796d23 source/common/framedata.h
> --- a/source/common/framedata.h Fri Apr 06 14:35:00 2018 +0530
> +++ b/source/common/framedata.h Mon May 21 11:55:19 2018 +0530
> @@ -203,13 +203,8 @@
> int64_t* sadCost;
>  };
>
> -struct analysis2PassFrameData
> +struct analysisDistortionData
>  {
> -uint8_t*  depth;
> -MV*   m_mv[2];
> -int*  mvpIdx[2];
> -int32_t*  ref[2];
> -uint8_t*  modes;
>  sse_t*distortion;
>  sse_t*ctuDistortion;
>  double*   scaledDistortion;
> diff -r ed853c4af671 -r 00eec4796d23 source/encoder/analysis.cpp
> --- a/source/encoder/analysis.cpp   Fri Apr 06 14:35:00 2018 +0530
> +++ b/source/encoder/analysis.cpp   Mon May 21 11:55:19 2018 +0530
> @@ -187,23 +187,20 @@
>  for (uint32_t i = 0; i < cuGeom.numPartitions; i++)
>  ctu.m_log2CUSize[i] = (uint8_t)m_param->maxLog2CUSize -
> ctu.m_cuDepth[i];
>  }
> -if (m_param->analysisMultiPassRefine && m_param->rc.bStatRead)
> +if (m_param->analysisMultiPassRefine && m_param->rc.bStatRead &&
> (m_slice->m_sliceType != I_SLICE))
>  {
> -m_multipassAnalysis = (analysis2PassFrameData*)m_
> frame->m_analysis2Pass.analysisFramedata;
> -m_multipassDepth = _multipassAnalysis->depth[ctu.m_cuAddr *
> ctu.m_numPartitions];
> -if (m_slice->m_sliceType != I_SLICE)
> +int numPredDir = m_slice->isInterP() ? 1 : 2;
> +m_reuseInterDataCTU = (analysis_inter_data*)m_frame-
> >m_analysisData.interData;
> +for (int dir = 0; dir < numPredDir; dir++)
>  {
> -int numPredDir = m_slice->isInterP() ? 1 : 2;
> -for (int dir = 0; dir < numPredDir; dir++)
> -{
> -m_multipassMv[dir] = 
> _multipassAnalysis->m_mv[dir][ctu.m_cuAddr
> * ctu.m_numPartitions];
> -m_multipassMvpIdx[dir] = 
> _multipassAnalysis->mvpIdx[dir][ctu.m_cuAddr
> * ctu.m_numPartitions];
> -m_multipassRef[dir] = 
> _multipassAnalysis->ref[dir][ctu.m_cuAddr
> * ctu.m_numPartitions];
> -}
> -m_multipassModes = _multipassAnalysis->modes[ctu.m_cuAddr
> * ctu.m_numPartitions];
> +m_reuseMv[dir] = _reuseInterDataCTU->mv[dir][ctu.m_cuAddr
> * ctu.m_numPartitions];
> +m_reuseMvpIdx[dir] = 
> _reuseInterDataCTU->mvpIdx[dir][ctu.m_cuAddr
> * ctu.m_numPartitions];
>  }
> +m_reuseRef = _reuseInterDataCTU->ref[ctu.m_cuAddr *
> ctu.m_numPartitions];
> +m_reuseModes = _reuseInterDataCTU->modes[ctu.m_cuAddr *
> ctu.m_numPartitions];
> +m_reuseDepth = _reuseInterDataCTU->depth[ctu.m_cuAddr *
> ctu.m_numPartitions];
>  }
> -
> +
>  if ((m_param->analysisSave || m_param->analysisLoad) &&
> m_slice->m_sliceType != I_SLICE && m_param->analysisReuseLevel > 1 &&
> m_param->analysisReuseLevel < 10)
>  {
>  int numPredDir = m_slice->isInterP() ? 1 : 2;
> @@ -1284,11 +1281,11 @@
>  }
>  }
>  }
> -if (m_param->analysisMultiPassRefine && m_param->rc.bStatRead &&
> m_multipassAnalysis)
> +if (m_param->analysisMultiPassRefine && m_param->rc.bStatRead &&
> m_reuseInterDataCTU)
>  {
> -if (mightNotSplit && depth == m_multipassDepth[cuGeom.
> absPartIdx])
> +if (mightNotSplit && depth == m_reuseDepth[cuGeom.
> absPartIdx])
>  {
> -if (m_multipassModes[cuGeom.absPartIdx] == MODE_SKIP)
> +if (m_reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
>  {
>   

[x265] [PATCH x265] Use the data structure of analysis-save/load for multi-pass-opt-analysis/multi-pass-opt-distortion

2018-06-08 Thread aruna
# HG changeset patch
# User Aruna Matheswaran 
# Date 1526883919 -19800
#  Mon May 21 11:55:19 2018 +0530
# Node ID 00eec4796d233e72d6344c7f4c9d5c69a9c55501
# Parent  ed853c4af6710a991d0cdf4bf68e00fe32edaacb
Use the data structure of analysis-save/load for 
multi-pass-opt-analysis/multi-pass-opt-distortion.

diff -r ed853c4af671 -r 00eec4796d23 source/common/frame.cpp
--- a/source/common/frame.cpp   Fri Apr 06 14:35:00 2018 +0530
+++ b/source/common/frame.cpp   Mon May 21 11:55:19 2018 +0530
@@ -83,7 +83,7 @@
 m_analysisData.wt = NULL;
 m_analysisData.intraData = NULL;
 m_analysisData.interData = NULL;
-m_analysis2Pass.analysisFramedata = NULL;
+m_analysisData.distortionData = NULL;
 }
 
 if (param->bDynamicRefine)
diff -r ed853c4af671 -r 00eec4796d23 source/common/frame.h
--- a/source/common/frame.h Fri Apr 06 14:35:00 2018 +0530
+++ b/source/common/frame.h Mon May 21 11:55:19 2018 +0530
@@ -109,7 +109,6 @@
 Frame* m_prev;
 x265_param*m_param;  // Points to the latest param 
set for the frame.
 x265_analysis_data m_analysisData;
-x265_analysis_2Passm_analysis2Pass;
 RcStats*   m_rcData;
 
 Event  m_copyMVType;
diff -r ed853c4af671 -r 00eec4796d23 source/common/framedata.h
--- a/source/common/framedata.h Fri Apr 06 14:35:00 2018 +0530
+++ b/source/common/framedata.h Mon May 21 11:55:19 2018 +0530
@@ -203,13 +203,8 @@
int64_t* sadCost;
 };
 
-struct analysis2PassFrameData
+struct analysisDistortionData
 {
-uint8_t*  depth;
-MV*   m_mv[2];
-int*  mvpIdx[2];
-int32_t*  ref[2];
-uint8_t*  modes;
 sse_t*distortion;
 sse_t*ctuDistortion;
 double*   scaledDistortion;
diff -r ed853c4af671 -r 00eec4796d23 source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp   Fri Apr 06 14:35:00 2018 +0530
+++ b/source/encoder/analysis.cpp   Mon May 21 11:55:19 2018 +0530
@@ -187,23 +187,20 @@
 for (uint32_t i = 0; i < cuGeom.numPartitions; i++)
 ctu.m_log2CUSize[i] = (uint8_t)m_param->maxLog2CUSize - 
ctu.m_cuDepth[i];
 }
-if (m_param->analysisMultiPassRefine && m_param->rc.bStatRead)
+if (m_param->analysisMultiPassRefine && m_param->rc.bStatRead && 
(m_slice->m_sliceType != I_SLICE))
 {
-m_multipassAnalysis = 
(analysis2PassFrameData*)m_frame->m_analysis2Pass.analysisFramedata;
-m_multipassDepth = _multipassAnalysis->depth[ctu.m_cuAddr * 
ctu.m_numPartitions];
-if (m_slice->m_sliceType != I_SLICE)
+int numPredDir = m_slice->isInterP() ? 1 : 2;
+m_reuseInterDataCTU = 
(analysis_inter_data*)m_frame->m_analysisData.interData;
+for (int dir = 0; dir < numPredDir; dir++)
 {
-int numPredDir = m_slice->isInterP() ? 1 : 2;
-for (int dir = 0; dir < numPredDir; dir++)
-{
-m_multipassMv[dir] = 
_multipassAnalysis->m_mv[dir][ctu.m_cuAddr * ctu.m_numPartitions];
-m_multipassMvpIdx[dir] = 
_multipassAnalysis->mvpIdx[dir][ctu.m_cuAddr * ctu.m_numPartitions];
-m_multipassRef[dir] = 
_multipassAnalysis->ref[dir][ctu.m_cuAddr * ctu.m_numPartitions];
-}
-m_multipassModes = _multipassAnalysis->modes[ctu.m_cuAddr * 
ctu.m_numPartitions];
+m_reuseMv[dir] = _reuseInterDataCTU->mv[dir][ctu.m_cuAddr * 
ctu.m_numPartitions];
+m_reuseMvpIdx[dir] = 
_reuseInterDataCTU->mvpIdx[dir][ctu.m_cuAddr * ctu.m_numPartitions];
 }
+m_reuseRef = _reuseInterDataCTU->ref[ctu.m_cuAddr * 
ctu.m_numPartitions];
+m_reuseModes = _reuseInterDataCTU->modes[ctu.m_cuAddr * 
ctu.m_numPartitions];
+m_reuseDepth = _reuseInterDataCTU->depth[ctu.m_cuAddr * 
ctu.m_numPartitions];
 }
-
+
 if ((m_param->analysisSave || m_param->analysisLoad) && 
m_slice->m_sliceType != I_SLICE && m_param->analysisReuseLevel > 1 && 
m_param->analysisReuseLevel < 10)
 {
 int numPredDir = m_slice->isInterP() ? 1 : 2;
@@ -1284,11 +1281,11 @@
 }
 }
 }
-if (m_param->analysisMultiPassRefine && m_param->rc.bStatRead && 
m_multipassAnalysis)
+if (m_param->analysisMultiPassRefine && m_param->rc.bStatRead && 
m_reuseInterDataCTU)
 {
-if (mightNotSplit && depth == m_multipassDepth[cuGeom.absPartIdx])
+if (mightNotSplit && depth == m_reuseDepth[cuGeom.absPartIdx])
 {
-if (m_multipassModes[cuGeom.absPartIdx] == MODE_SKIP)
+if (m_reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
 {
 md.pred[PRED_MERGE].cu.initSubCU(parentCTU, cuGeom, qp);
 md.pred[PRED_SKIP].cu.initSubCU(parentCTU, cuGeom, qp);
@@ -1977,11 +1974,11 @@
 }
 }
 
-if (m_param->analysisMultiPassRefine &&