# HG changeset patch
# User Ma0 <mateu...@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);
                                     }
                                 }
_______________________________________________
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel

Reply via email to