[x265] [PATCH] remove unnecessary sqrt from MVTHRESHOLD checking
Ma0
mateuszb at poczta.onet.pl
Thu Dec 7 09:22:55 CET 2017
# HG changeset patch
# User Ma0 <mateuszb at poczta.onet.pl>
# Date 1512634751 -3600
# Thu Dec 07 09:19:11 2017 +0100
# Node ID c9ee52a7b14458abd01ae7540d8d8ba34d0393ef
# Parent 7bd8751a81830815cdc8e4dfc88cad2c8ca15ca7
remove unnecessary sqrt from MVTHRESHOLD checking
Thanks MonoS Diablo for pointing this.
diff -r 7bd8751a8183 -r c9ee52a7b144 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp Wed Dec 06 13:33:00 2017 +0530
+++ b/source/encoder/encoder.cpp Thu Dec 07 09:19:11 2017 +0100
@@ -51,7 +51,7 @@
/* Threshold for motion vection, based on expermental result.
* TODO: come up an algorithm for adoptive threshold */
-#define MVTHRESHOLD 10
+#define MVTHRESHOLD (10*10)
#define PU_2Nx2N 1
static const char* defaultAnalysisFileName = "x265_analysis.dat";
@@ -571,12 +571,12 @@
(interData)->mvpIdx[k][cuPos + cuOffset] = (srcInterData)->mvpIdx[k][(mbIndex * 16) + cuOffset];
(interData)->refIdx[k][cuPos + cuOffset] = (srcInterData)->refIdx[k][(mbIndex * 16) + cuOffset];
memcpy(&(interData)->mv[k][cuPos + cuOffset], &(srcInterData)->mv[k][(mbIndex * 16) + cuOffset], sizeof(MV));
- if (m_param->analysisReuseLevel == 7)
+ if (m_param->analysisReuseLevel == 7 && numPU == PU_2Nx2N &&
+ ((srcInterData)->depth[cuPos + cuOffset] == (m_param->maxCUSize >> 5)))
{
int mv_x = ((analysis_inter_data *)curFrame->m_analysisData.interData)->mv[k][(mbIndex * 16) + cuOffset].x;
int mv_y = ((analysis_inter_data *)curFrame->m_analysisData.interData)->mv[k][(mbIndex * 16) + cuOffset].y;
- double mv = sqrt((double)(mv_x*mv_x + mv_y*mv_y));
- if (numPU == PU_2Nx2N && ((srcInterData)->depth[cuPos + cuOffset] == (m_param->maxCUSize >> 5)) && mv <= MVTHRESHOLD)
+ if ((mv_x*mv_x + mv_y*mv_y) <= MVTHRESHOLD)
memset(&curFrame->m_analysisData.modeFlag[k][cuPos + cuOffset], 1, bytes);
}
}
@@ -654,12 +654,11 @@
(currInterData)->mvpIdx[i][count + pu] = (interData)->mvpIdx[i][d];
(currInterData)->refIdx[i][count + pu] = (interData)->refIdx[i][d];
memcpy(&(currInterData)->mv[i][count + pu], &(interData)->mv[i][d], sizeof(MV));
- if (m_param->analysisReuseLevel == 7)
+ if (m_param->analysisReuseLevel == 7 && numPU == PU_2Nx2N && m_param->num4x4Partitions <= 16)
{
int mv_x = ((analysis_inter_data *)curFrame->m_analysisData.interData)->mv[i][count + pu].x;
int mv_y = ((analysis_inter_data *)curFrame->m_analysisData.interData)->mv[i][count + pu].y;
- double mv = sqrt((double)(mv_x*mv_x + mv_y*mv_y));
- if (numPU == PU_2Nx2N && m_param->num4x4Partitions <= 16 && mv <= MVTHRESHOLD)
+ if ((mv_x*mv_x + mv_y*mv_y) <= MVTHRESHOLD)
memset(&curFrame->m_analysisData.modeFlag[i][count + pu], 1, bytes);
}
}
More information about the x265-devel
mailing list