<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Sun, Sep 9, 2018 at 7:00 PM Ma0 <<a href="mailto:mateuszb@poczta.onet.pl">mateuszb@poczta.onet.pl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># HG changeset patch<br>
# User Ma0 <<a href="mailto:mateuszb@poczta.onet.pl" target="_blank">mateuszb@poczta.onet.pl</a>><br>
# Date 1536497834 -7200<br>
#      Sun Sep 09 14:57:14 2018 +0200<br>
# Node ID fa57fa584898fa3036e6748c0d7d348a9ce55b54<br>
# Parent  deb35c64bdc56e4c9405d34bff516dc5bdaae5ae<br>
use one 32bit operation instead of two 16bit in MV union<br>
<br>
diff -r deb35c64bdc5 -r fa57fa584898 source/encoder/analysis.cpp<br>
--- a/source/encoder/analysis.cpp       Sun Sep 09 14:47:59 2018 +0200<br>
+++ b/source/encoder/analysis.cpp       Sun Sep 09 14:57:14 2018 +0200<br>
@@ -70,12 +70,6 @@<br>
  * rd-level 5,6 does RDO for each inter mode<br>
  */<br>
<br>
-#define COPY_TO_MV(s1, s2, d1, d2)\<br>
-    {\<br>
-        d1 = s1; \<br>
-        d2 = s2; \<br>
-    }<br>
-<br>
 Analysis::Analysis()<br>
 {<br>
     m_reuseInterDataCTU = NULL;<br>
@@ -2467,9 +2461,7 @@<br>
                     mode.cu.setPUInterDir(interDataCTU->interDir[cuIdx + part], pu.puAbsPartIdx, part);<br>
                     for (int list = 0; list < m_slice->isInterB() + 1; list++)<br>
                     {<br>
-                        MV dst; x265_analysis_MV src = interDataCTU->mv[list][cuIdx + part];<br>
-                        COPY_TO_MV(src.x, src.y, dst.x, dst.y);<br>
-                        mode.cu.setPUMv(list, dst, pu.puAbsPartIdx, part);<br>
+                        mode.cu.setPUMv(list, interDataCTU->mv[list][cuIdx + part].word, pu.puAbsPartIdx, part);<br>
                         mode.cu.setPURefIdx(list, interDataCTU->refIdx[list][cuIdx + part], pu.puAbsPartIdx, part);<br>
                         mode.cu.m_mvpIdx[list][pu.puAbsPartIdx] = interDataCTU->mvpIdx[list][cuIdx + part];<br>
                     }<br>
@@ -2491,10 +2483,7 @@<br>
                             if (m_param->interRefine != 1)<br>
                                 mvp = mode.amvpCand[list][ref][mode.cu.m_mvpIdx[list][pu.puAbsPartIdx]];<br>
                             else<br>
-                            {<br>
-                                x265_analysis_MV src = interDataCTU->mv[list][cuIdx + part];<br>
-                                COPY_TO_MV(src.x, src.y, mvp.x, mvp.y);<br>
-                            }<br>
+                                mvp = interDataCTU->mv[list][cuIdx + part].word;<br>
                             if (m_param->mvRefine || m_param->interRefine == 1)<br>
                             {<br>
                                 MV outmv;<br>
@@ -3032,9 +3021,8 @@<br>
             for (int32_t i = 0; i < numPredDir; i++)<br>
             {<br>
                 int* ref = &m_reuseRef[i * m_frame->m_analysisData.numPartitions * m_frame->m_analysisData.numCUsInFrame];<br>
-                x265_analysis_MV src = m_reuseMv[i][cuGeom.absPartIdx];<br>
                 bestME[i].ref = ref[cuGeom.absPartIdx];<br>
-                COPY_TO_MV(src.x, src.y, bestME[i].mv.x, bestME[i].mv.y);<br>
+                bestME[i].mv = m_reuseMv[i][cuGeom.absPartIdx].word;<br>
                 bestME[i].mvpIdx = m_reuseMvpIdx[i][cuGeom.absPartIdx];<br>
             }<br>
         }<br>
@@ -3097,10 +3085,9 @@<br>
             MotionData* bestME = interMode.bestME[part];<br>
             for (int32_t i = 0; i < numPredDir; i++)<br>
             {<br>
-                x265_analysis_MV src = m_reuseMv[i][cuGeom.absPartIdx];<br>
                 int* ref = &m_reuseRef[i * m_frame->m_analysisData.numPartitions * m_frame->m_analysisData.numCUsInFrame];<br>
                 bestME[i].ref = ref[cuGeom.absPartIdx];<br>
-                COPY_TO_MV(src.x, src.y, bestME[i].mv.x, bestME[i].mv.y);<br>
+                bestME[i].mv = m_reuseMv[i][cuGeom.absPartIdx].word;<br>
                 bestME[i].mvpIdx = m_reuseMvpIdx[i][cuGeom.absPartIdx];<br>
             }<br>
         }<br>
diff -r deb35c64bdc5 -r fa57fa584898 source/encoder/encoder.cpp<br>
--- a/source/encoder/encoder.cpp        Sun Sep 09 14:47:59 2018 +0200<br>
+++ b/source/encoder/encoder.cpp        Sun Sep 09 14:57:14 2018 +0200<br>
@@ -4281,8 +4281,6 @@<br>
                                 {<br>
                                     interDataCTU->mvpIdx[dir][depthBytes] = ctu->m_mvpIdx[dir][puabsPartIdx];<br>
                                     interDataCTU->refIdx[dir][depthBytes] = ctu->m_refIdx[dir][puabsPartIdx];<br>
-                                    interDataCTU->mv[dir][depthBytes].x = ctu->m_mv[dir][puabsPartIdx].x;<br>
-                                    interDataCTU->mv[dir][depthBytes].y = ctu->m_mv[dir][puabsPartIdx].y;<br>
                                     interDataCTU->mv[dir][depthBytes].word = ctu->m_mv[dir][puabsPartIdx].word;<br>
                                 }<br>
                             }<br>
@@ -4425,16 +4423,12 @@<br>
             for (uint32_t absPartIdx = 0; absPartIdx < ctu->m_numPartitions; depthBytes++)<br>
             {<br>
                 depth = ctu->m_cuDepth[absPartIdx];<br>
-                interData->mv[0][depthBytes].x = ctu->m_mv[0][absPartIdx].x;<br>
-                interData->mv[0][depthBytes].y = ctu->m_mv[0][absPartIdx].y;<br>
                 interData->mv[0][depthBytes].word = ctu->m_mv[0][absPartIdx].word;<br>
                 interData->mvpIdx[0][depthBytes] = ctu->m_mvpIdx[0][absPartIdx];<br>
                 ref[0][depthBytes] = ctu->m_refIdx[0][absPartIdx];<br>
                 predMode = ctu->m_predMode[absPartIdx];<br>
                 if (ctu->m_refIdx[1][absPartIdx] != -1)<br>
                 {<br>
-                    interData->mv[1][depthBytes].x = ctu->m_mv[1][absPartIdx].x;<br>
-                    interData->mv[1][depthBytes].y = ctu->m_mv[1][absPartIdx].y;<br>
                     interData->mv[1][depthBytes].word = ctu->m_mv[1][absPartIdx].word;<br>
                     interData->mvpIdx[1][depthBytes] = ctu->m_mvpIdx[1][absPartIdx];<br>
                     ref[1][depthBytes] = ctu->m_refIdx[1][absPartIdx];<br>
diff -r deb35c64bdc5 -r fa57fa584898 source/encoder/search.cpp<br>
--- a/source/encoder/search.cpp Sun Sep 09 14:47:59 2018 +0200<br>
+++ b/source/encoder/search.cpp Sun Sep 09 14:57:14 2018 +0200<br>
@@ -2225,9 +2225,7 @@<br>
                 MV mvmin, mvmax, outmv, mvp;<br>
                 if (useAsMVP)<br>
                 {<br>
-                    mvp.x = interDataCTU->mv[list][cuIdx + puIdx].x;<br>
-                    mvp.y = interDataCTU->mv[list][cuIdx + puIdx].y;<br>
-                    mvp.word = interDataCTU->mv[list][cuIdx + puIdx].word;<br>
+                    mvp = interDataCTU->mv[list][cuIdx + puIdx].word;<br>
                     mvpIdx = interDataCTU->mvpIdx[list][cuIdx + puIdx];<br>
                 }<br>
                 else<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org" target="_blank">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a></blockquote><div><br></div><div>Pushed to default. </div></div></div>