[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