[x265] [PATCH] rc: compute inter, intra and skip cus per frame for the first pass

aarthi at multicorewareinc.com aarthi at multicorewareinc.com
Mon Jun 30 18:38:18 CEST 2014


# HG changeset patch
# User Aarthi Thirumalai
# Date 1403785166 -19800
#      Thu Jun 26 17:49:26 2014 +0530
# Node ID 2dd5aded9e192783dfc8f8307a05e3b2a55b7f1d
# Parent  bab912d0834914e8947a126e6b0ec4dbc75d7843
rc: compute inter, intra and skip cus per frame for the first pass

diff -r bab912d08349 -r 2dd5aded9e19 source/Lib/TLibEncoder/TEncCu.cpp
--- a/source/Lib/TLibEncoder/TEncCu.cpp	Wed Jun 25 22:49:38 2014 +0530
+++ b/source/Lib/TLibEncoder/TEncCu.cpp	Thu Jun 26 17:49:26 2014 +0530
@@ -341,6 +341,7 @@
             do
             {
                 m_log->totalCu++;
+                m_log->rowIntraCuCnt++;
                 part = cu->getDepth(i);
                 int next = numPartition >> (part * 2);
                 if (part == g_maxCUDepth - 1 && cu->getPartitionSize(i) != SIZE_2Nx2N)
@@ -383,6 +384,7 @@
                 if (cu->isSkipped(i))
                 {
                     m_log->cntSkipCu[part]++;
+                    m_log->rowSkipCuCnt++;
                 }
                 else
                 {
@@ -390,6 +392,7 @@
                     if (cu->getPredictionMode(0) == MODE_INTER)
                     {
                         m_log->cntInter[part]++;
+                        m_log->rowInterCuCnt++;
                         if (cu->getPartitionSize(0) < AMP_ID)
                             m_log->cuInterDistribution[part][cu->getPartitionSize(0)]++;
                         else
@@ -397,6 +400,7 @@
                     }
                     else if (cu->getPredictionMode(0) == MODE_INTRA)
                     {
+                        m_log->rowIntraCuCnt++;
                         if (part == g_maxCUDepth - 1 && cu->getPartitionSize(0) == SIZE_NxN)
                         {
                             m_log->cntIntraNxN++;
diff -r bab912d08349 -r 2dd5aded9e19 source/Lib/TLibEncoder/TEncCu.h
--- a/source/Lib/TLibEncoder/TEncCu.h	Wed Jun 25 22:49:38 2014 +0530
+++ b/source/Lib/TLibEncoder/TEncCu.h	Thu Jun 26 17:49:26 2014 +0530
@@ -65,7 +65,9 @@
     uint64_t cntSkipCu[4];
     uint64_t cntTotalCu[4];
     uint64_t totalCu;
-
+    uint32_t rowInterCuCnt;
+    uint32_t rowIntraCuCnt;
+    uint32_t rowSkipCuCnt;
     StatisticLog()
     {
         memset(this, 0, sizeof(StatisticLog));
diff -r bab912d08349 -r 2dd5aded9e19 source/encoder/frameencoder.cpp
--- a/source/encoder/frameencoder.cpp	Wed Jun 25 22:49:38 2014 +0530
+++ b/source/encoder/frameencoder.cpp	Thu Jun 26 17:49:26 2014 +0530
@@ -1037,6 +1037,14 @@
             enableRowFilter(i);
         }
     }
+
+    // copy no. of intra, inter Cu cnt per row into frame stats
+    m_frame->m_stats.cuCount_i += tld.m_cuCoder.m_log->rowIntraCuCnt;
+    m_frame->m_stats.cuCount_p += tld.m_cuCoder.m_log->rowInterCuCnt;
+    m_frame->m_stats.cuCount_skip += tld.m_cuCoder.m_log->rowSkipCuCnt;
+    //clear the row cu data from thread local object
+    tld.m_cuCoder.m_log->rowIntraCuCnt = tld.m_cuCoder.m_log->rowInterCuCnt = tld.m_cuCoder.m_log->rowSkipCuCnt = 0;
+
     m_totalTime += x265_mdate() - startTime;
     curRow.m_busy = false;
 }


More information about the x265-devel mailing list