[x265] [PATCH] analysis: init depth and mode analysis buffer at the begining of CTU compression. Encoder nits

2016-03-09 Thread sagar
# HG changeset patch
# User Sagar Kotecha
# Date 1457594824 -19800
#  Thu Mar 10 12:57:04 2016 +0530
# Node ID 5a7d55313b7741f3d0bd6134d2451b5989f517ed
# Parent  4a389ff5cdc32a7cd01f1dac39090930b54f2ea1
analysis: init depth and mode analysis buffer at the begining of CTU 
compression. Encoder nits.

diff -r 4a389ff5cdc3 -r 5a7d55313b77 source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp   Thu Mar 10 11:36:23 2016 +0530
+++ b/source/encoder/analysis.cpp   Thu Mar 10 12:57:04 2016 +0530
@@ -147,6 +147,8 @@
 int numPredDir = m_slice->isInterP() ? 1 : 2;
 m_reuseInterDataCTU = 
(analysis_inter_data*)m_frame->m_analysisData.interData;
 m_reuseRef = _reuseInterDataCTU->ref[ctu.m_cuAddr * 
X265_MAX_PRED_MODE_PER_CTU * numPredDir];
+m_reuseDepth = _reuseInterDataCTU->depth[ctu.m_cuAddr * 
ctu.m_numPartitions];
+m_reuseModes = _reuseInterDataCTU->modes[ctu.m_cuAddr * 
ctu.m_numPartitions];
 }
 ProfileCUScope(ctu, totalCTUTime, totalCTUs);
 
@@ -897,9 +899,7 @@
 bool foundSkip = false;
 if (m_param->analysisMode == X265_ANALYSIS_LOAD)
 {
-uint8_t* reuseDepth = _reuseInterDataCTU->depth[parentCTU.m_cuAddr * 
parentCTU.m_numPartitions];
-uint8_t* reuseModes = _reuseInterDataCTU->modes[parentCTU.m_cuAddr * 
parentCTU.m_numPartitions];
-if (mightNotSplit && depth == reuseDepth[cuGeom.absPartIdx] && 
reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
+if (mightNotSplit && depth == m_reuseDepth[cuGeom.absPartIdx] && 
m_reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
 {
 md.pred[PRED_MERGE].cu.initSubCU(parentCTU, cuGeom, qp);
 md.pred[PRED_SKIP].cu.initSubCU(parentCTU, cuGeom, qp);
@@ -1385,9 +1385,7 @@
 
 if (m_param->analysisMode == X265_ANALYSIS_LOAD)
 {
-uint8_t* reuseDepth  = _reuseInterDataCTU->depth[parentCTU.m_cuAddr 
* parentCTU.m_numPartitions];
-uint8_t* reuseModes  = _reuseInterDataCTU->modes[parentCTU.m_cuAddr 
* parentCTU.m_numPartitions];
-if (mightNotSplit && depth == reuseDepth[cuGeom.absPartIdx] && 
reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
+if (mightNotSplit && depth == m_reuseDepth[cuGeom.absPartIdx] && 
m_reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
 {
 md.pred[PRED_SKIP].cu.initSubCU(parentCTU, cuGeom, qp);
 md.pred[PRED_MERGE].cu.initSubCU(parentCTU, cuGeom, qp);
diff -r 4a389ff5cdc3 -r 5a7d55313b77 source/encoder/analysis.h
--- a/source/encoder/analysis.h Thu Mar 10 11:36:23 2016 +0530
+++ b/source/encoder/analysis.h Thu Mar 10 12:57:04 2016 +0530
@@ -117,9 +117,11 @@
 Mode& compressCTU(CUData& ctu, Frame& frame, const CUGeom& cuGeom, const 
Entropy& initialContext);
 
 protected:
-/* Analysis data for load/save modes, keeps getting incremented as CTU 
analysis proceeds and data is consumed or read */
-analysis_inter_data* m_reuseInterDataCTU;
-int32_t* m_reuseRef;
+/* Analysis data for save/load mode, writes/reads data based on absPartIdx 
*/
+analysis_inter_data* m_reuseInterDataCTU;
+int32_t* m_reuseRef;
+uint8_t* m_reuseDepth;
+uint8_t* m_reuseModes;
 
 uint32_t m_splitRefIdx[4];
 uint64_t* cacheCost;
diff -r 4a389ff5cdc3 -r 5a7d55313b77 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cppThu Mar 10 11:36:23 2016 +0530
+++ b/source/encoder/encoder.cppThu Mar 10 12:57:04 2016 +0530
@@ -2116,10 +2116,8 @@
 absPartIdx += ctu->m_numPartitions >> (depth * 2);
 }
 }
-
 }
 
-
 /* calculate frameRecordSize */
 analysis->frameRecordSize = sizeof(analysis->frameRecordSize) + 
sizeof(depthBytes) + sizeof(analysis->poc) + sizeof(analysis->sliceType) +
   sizeof(analysis->numCUsInFrame) + 
sizeof(analysis->numPartitions) + sizeof(analysis->bScenecut) + 
sizeof(analysis->satdCost);
___
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel


Re: [x265] [PATCH] analysis: init depth and mode analysis buffer at the begining of CTU compression. Encoder nits

2016-03-09 Thread Sagar Kotecha
Yes. Thanks. Sending updated patch.

--
Sagar

On Thu, Mar 10, 2016 at 12:47 PM, Deepthi Nandakumar <
deep...@multicorewareinc.com> wrote:

>
>
> On Wed, Mar 9, 2016 at 2:22 PM,  wrote:
>
>> # HG changeset patch
>> # User Sagar Kotecha
>> # Date 1457442015 -19800
>> #  Tue Mar 08 18:30:15 2016 +0530
>> # Node ID 8999a30d29f479d8dc8425046c26af8581cfa2ba
>> # Parent  67b63012de821913ecde12c000d09a5a8e5c76fa
>> analysis: init depth and mode analysis buffer at the begining of CTU
>> compression. Encoder nits.
>>
>> diff -r 67b63012de82 -r 8999a30d29f4 source/encoder/analysis.cpp
>> --- a/source/encoder/analysis.cpp   Tue Mar 08 11:14:52 2016 +0530
>> +++ b/source/encoder/analysis.cpp   Tue Mar 08 18:30:15 2016 +0530
>> @@ -147,6 +147,8 @@
>>  int numPredDir = m_slice->isInterP() ? 1 : 2;
>>  m_reuseInterDataCTU =
>> (analysis_inter_data*)m_frame->m_analysisData.interData;
>>  m_reuseRef = _reuseInterDataCTU->ref[ctu.m_cuAddr *
>> X265_MAX_PRED_MODE_PER_CTU * numPredDir];
>> +m_reuseDepth = _reuseInterDataCTU->depth[ctu.m_cuAddr *
>> ctu.m_numPartitions];
>> +m_reuseModes = _reuseInterDataCTU->modes[ctu.m_cuAddr *
>> ctu.m_numPartitions];
>>
>
> You can modify this in rd5_6 also.
>
>
>>  if (m_param->analysisMode == X265_ANALYSIS_SAVE)
>>  for (int i = 0; i < X265_MAX_PRED_MODE_PER_CTU * numPredDir;
>> i++)
>>  m_reuseRef[i] = -1;
>> @@ -900,9 +902,7 @@
>>  bool foundSkip = false;
>>  if (m_param->analysisMode == X265_ANALYSIS_LOAD)
>>  {
>> -uint8_t* reuseDepth =
>> _reuseInterDataCTU->depth[parentCTU.m_cuAddr * parentCTU.m_numPartitions];
>> -uint8_t* reuseModes =
>> _reuseInterDataCTU->modes[parentCTU.m_cuAddr * parentCTU.m_numPartitions];
>> -if (mightNotSplit && depth == reuseDepth[cuGeom.absPartIdx] &&
>> reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
>> +if (mightNotSplit && depth == m_reuseDepth[cuGeom.absPartIdx] &&
>> m_reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
>>  {
>>  md.pred[PRED_MERGE].cu.initSubCU(parentCTU, cuGeom, qp);
>>  md.pred[PRED_SKIP].cu.initSubCU(parentCTU, cuGeom, qp);
>> diff -r 67b63012de82 -r 8999a30d29f4 source/encoder/analysis.h
>> --- a/source/encoder/analysis.h Tue Mar 08 11:14:52 2016 +0530
>> +++ b/source/encoder/analysis.h Tue Mar 08 18:30:15 2016 +0530
>> @@ -117,9 +117,11 @@
>>  Mode& compressCTU(CUData& ctu, Frame& frame, const CUGeom& cuGeom,
>> const Entropy& initialContext);
>>
>>  protected:
>> -/* Analysis data for load/save modes, keeps getting incremented as
>> CTU analysis proceeds and data is consumed or read */
>> +/* Analysis data for save/load mode, writes/reads data based on
>> absPartIdx */
>>  analysis_inter_data* m_reuseInterDataCTU;
>>  int32_t* m_reuseRef;
>> +uint8_t* m_reuseDepth;
>> +uint8_t* m_reuseModes;
>>
>>  uint32_t m_splitRefIdx[4];
>>  uint64_t* cacheCost;
>> diff -r 67b63012de82 -r 8999a30d29f4 source/encoder/encoder.cpp
>> --- a/source/encoder/encoder.cppTue Mar 08 11:14:52 2016 +0530
>> +++ b/source/encoder/encoder.cppTue Mar 08 18:30:15 2016 +0530
>> @@ -2122,10 +2122,8 @@
>>  absPartIdx += ctu->m_numPartitions >> (depth * 2);
>>  }
>>  }
>> -
>>  }
>>
>> -
>>  /* calculate frameRecordSize */
>>  analysis->frameRecordSize = sizeof(analysis->frameRecordSize) +
>> sizeof(depthBytes) + sizeof(analysis->poc) + sizeof(analysis->sliceType) +
>>sizeof(analysis->numCUsInFrame) +
>> sizeof(analysis->numPartitions) + sizeof(analysis->bScenecut) +
>> sizeof(analysis->satdCost);
>> ___
>> x265-devel mailing list
>> x265-devel@videolan.org
>> https://mailman.videolan.org/listinfo/x265-devel
>>
>
>
>
> --
> Deepthi Nandakumar
> Engineering Manager, x265
> Multicoreware, Inc
>
> ___
> 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


Re: [x265] [PATCH] analysis: init depth and mode analysis buffer at the begining of CTU compression. Encoder nits

2016-03-09 Thread Deepthi Nandakumar
On Wed, Mar 9, 2016 at 2:22 PM,  wrote:

> # HG changeset patch
> # User Sagar Kotecha
> # Date 1457442015 -19800
> #  Tue Mar 08 18:30:15 2016 +0530
> # Node ID 8999a30d29f479d8dc8425046c26af8581cfa2ba
> # Parent  67b63012de821913ecde12c000d09a5a8e5c76fa
> analysis: init depth and mode analysis buffer at the begining of CTU
> compression. Encoder nits.
>
> diff -r 67b63012de82 -r 8999a30d29f4 source/encoder/analysis.cpp
> --- a/source/encoder/analysis.cpp   Tue Mar 08 11:14:52 2016 +0530
> +++ b/source/encoder/analysis.cpp   Tue Mar 08 18:30:15 2016 +0530
> @@ -147,6 +147,8 @@
>  int numPredDir = m_slice->isInterP() ? 1 : 2;
>  m_reuseInterDataCTU =
> (analysis_inter_data*)m_frame->m_analysisData.interData;
>  m_reuseRef = _reuseInterDataCTU->ref[ctu.m_cuAddr *
> X265_MAX_PRED_MODE_PER_CTU * numPredDir];
> +m_reuseDepth = _reuseInterDataCTU->depth[ctu.m_cuAddr *
> ctu.m_numPartitions];
> +m_reuseModes = _reuseInterDataCTU->modes[ctu.m_cuAddr *
> ctu.m_numPartitions];
>

You can modify this in rd5_6 also.


>  if (m_param->analysisMode == X265_ANALYSIS_SAVE)
>  for (int i = 0; i < X265_MAX_PRED_MODE_PER_CTU * numPredDir;
> i++)
>  m_reuseRef[i] = -1;
> @@ -900,9 +902,7 @@
>  bool foundSkip = false;
>  if (m_param->analysisMode == X265_ANALYSIS_LOAD)
>  {
> -uint8_t* reuseDepth =
> _reuseInterDataCTU->depth[parentCTU.m_cuAddr * parentCTU.m_numPartitions];
> -uint8_t* reuseModes =
> _reuseInterDataCTU->modes[parentCTU.m_cuAddr * parentCTU.m_numPartitions];
> -if (mightNotSplit && depth == reuseDepth[cuGeom.absPartIdx] &&
> reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
> +if (mightNotSplit && depth == m_reuseDepth[cuGeom.absPartIdx] &&
> m_reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
>  {
>  md.pred[PRED_MERGE].cu.initSubCU(parentCTU, cuGeom, qp);
>  md.pred[PRED_SKIP].cu.initSubCU(parentCTU, cuGeom, qp);
> diff -r 67b63012de82 -r 8999a30d29f4 source/encoder/analysis.h
> --- a/source/encoder/analysis.h Tue Mar 08 11:14:52 2016 +0530
> +++ b/source/encoder/analysis.h Tue Mar 08 18:30:15 2016 +0530
> @@ -117,9 +117,11 @@
>  Mode& compressCTU(CUData& ctu, Frame& frame, const CUGeom& cuGeom,
> const Entropy& initialContext);
>
>  protected:
> -/* Analysis data for load/save modes, keeps getting incremented as
> CTU analysis proceeds and data is consumed or read */
> +/* Analysis data for save/load mode, writes/reads data based on
> absPartIdx */
>  analysis_inter_data* m_reuseInterDataCTU;
>  int32_t* m_reuseRef;
> +uint8_t* m_reuseDepth;
> +uint8_t* m_reuseModes;
>
>  uint32_t m_splitRefIdx[4];
>  uint64_t* cacheCost;
> diff -r 67b63012de82 -r 8999a30d29f4 source/encoder/encoder.cpp
> --- a/source/encoder/encoder.cppTue Mar 08 11:14:52 2016 +0530
> +++ b/source/encoder/encoder.cppTue Mar 08 18:30:15 2016 +0530
> @@ -2122,10 +2122,8 @@
>  absPartIdx += ctu->m_numPartitions >> (depth * 2);
>  }
>  }
> -
>  }
>
> -
>  /* calculate frameRecordSize */
>  analysis->frameRecordSize = sizeof(analysis->frameRecordSize) +
> sizeof(depthBytes) + sizeof(analysis->poc) + sizeof(analysis->sliceType) +
>sizeof(analysis->numCUsInFrame) +
> sizeof(analysis->numPartitions) + sizeof(analysis->bScenecut) +
> sizeof(analysis->satdCost);
> ___
> x265-devel mailing list
> x265-devel@videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>



-- 
Deepthi Nandakumar
Engineering Manager, x265
Multicoreware, Inc
___
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel


[x265] [PATCH] analysis: init depth and mode analysis buffer at the begining of CTU compression. Encoder nits

2016-03-09 Thread sagar
# HG changeset patch
# User Sagar Kotecha
# Date 1457442015 -19800
#  Tue Mar 08 18:30:15 2016 +0530
# Node ID 8999a30d29f479d8dc8425046c26af8581cfa2ba
# Parent  67b63012de821913ecde12c000d09a5a8e5c76fa
analysis: init depth and mode analysis buffer at the begining of CTU 
compression. Encoder nits.

diff -r 67b63012de82 -r 8999a30d29f4 source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp   Tue Mar 08 11:14:52 2016 +0530
+++ b/source/encoder/analysis.cpp   Tue Mar 08 18:30:15 2016 +0530
@@ -147,6 +147,8 @@
 int numPredDir = m_slice->isInterP() ? 1 : 2;
 m_reuseInterDataCTU = 
(analysis_inter_data*)m_frame->m_analysisData.interData;
 m_reuseRef = _reuseInterDataCTU->ref[ctu.m_cuAddr * 
X265_MAX_PRED_MODE_PER_CTU * numPredDir];
+m_reuseDepth = _reuseInterDataCTU->depth[ctu.m_cuAddr * 
ctu.m_numPartitions];
+m_reuseModes = _reuseInterDataCTU->modes[ctu.m_cuAddr * 
ctu.m_numPartitions];
 if (m_param->analysisMode == X265_ANALYSIS_SAVE)
 for (int i = 0; i < X265_MAX_PRED_MODE_PER_CTU * numPredDir; i++)
 m_reuseRef[i] = -1;
@@ -900,9 +902,7 @@
 bool foundSkip = false;
 if (m_param->analysisMode == X265_ANALYSIS_LOAD)
 {
-uint8_t* reuseDepth = _reuseInterDataCTU->depth[parentCTU.m_cuAddr * 
parentCTU.m_numPartitions];
-uint8_t* reuseModes = _reuseInterDataCTU->modes[parentCTU.m_cuAddr * 
parentCTU.m_numPartitions];
-if (mightNotSplit && depth == reuseDepth[cuGeom.absPartIdx] && 
reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
+if (mightNotSplit && depth == m_reuseDepth[cuGeom.absPartIdx] && 
m_reuseModes[cuGeom.absPartIdx] == MODE_SKIP)
 {
 md.pred[PRED_MERGE].cu.initSubCU(parentCTU, cuGeom, qp);
 md.pred[PRED_SKIP].cu.initSubCU(parentCTU, cuGeom, qp);
diff -r 67b63012de82 -r 8999a30d29f4 source/encoder/analysis.h
--- a/source/encoder/analysis.h Tue Mar 08 11:14:52 2016 +0530
+++ b/source/encoder/analysis.h Tue Mar 08 18:30:15 2016 +0530
@@ -117,9 +117,11 @@
 Mode& compressCTU(CUData& ctu, Frame& frame, const CUGeom& cuGeom, const 
Entropy& initialContext);
 
 protected:
-/* Analysis data for load/save modes, keeps getting incremented as CTU 
analysis proceeds and data is consumed or read */
+/* Analysis data for save/load mode, writes/reads data based on absPartIdx 
*/
 analysis_inter_data* m_reuseInterDataCTU;
 int32_t* m_reuseRef;
+uint8_t* m_reuseDepth;
+uint8_t* m_reuseModes;
 
 uint32_t m_splitRefIdx[4];
 uint64_t* cacheCost;
diff -r 67b63012de82 -r 8999a30d29f4 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cppTue Mar 08 11:14:52 2016 +0530
+++ b/source/encoder/encoder.cppTue Mar 08 18:30:15 2016 +0530
@@ -2122,10 +2122,8 @@
 absPartIdx += ctu->m_numPartitions >> (depth * 2);
 }
 }
-
 }
 
-
 /* calculate frameRecordSize */
 analysis->frameRecordSize = sizeof(analysis->frameRecordSize) + 
sizeof(depthBytes) + sizeof(analysis->poc) + sizeof(analysis->sliceType) +
   sizeof(analysis->numCUsInFrame) + 
sizeof(analysis->numPartitions) + sizeof(analysis->bScenecut) + 
sizeof(analysis->satdCost);
___
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel