<div dir="ltr"><div><div><div><div>Min,<br><br></div>Inside CUData::getPMV(), the amvpCand list is specified by the HEVC standard, but pmv (or motion vector candidate list) is not. The encoder is free to prune/modify this list.<br><br></div>We can prune this list within getPMV(), and return the right numMvc (after duplicate MVs have been removed). <br><br></div>Thanks,<br></div>Deepthi<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 31, 2015 at 7:02 PM, chen <span dir="ltr"><<a href="mailto:chenm003@163.com" target="_blank">chenm003@163.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><div></div>
<div></div>
<div>This is simplest way, these MVC generate from MV reference list, we can't remove reduce mv in the list since it defined by HEVC specifiction.</div>
<div> </div>
<div>btw: my debug code catch more than 6 duplicate MVs in the list.<br></div><div><div class="h5">At 2015-08-31 13:48:00,"Deepthi Nandakumar" <<a href="mailto:deepthi@multicorewareinc.com" target="_blank">deepthi@multicorewareinc.com</a>> wrote:<br>
<blockquote style="PADDING-LEFT:1ex;MARGIN:0px 0px 0px 0.8ex;BORDER-LEFT:#ccc 1px solid">
<div dir="ltr">
<div>hmm, ok. But wouldnt it be better to do this in predMV, and generate the right number of numCandidates? <br><br></div>I'm looking suspiciously at the dynamic adaptation of merange (lines 793:844). This might be a good time to fix that as well. <br></div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Aug 27, 2015 at 5:43 AM, Min Chen <span dir="ltr"><<a href="mailto:chenm003@163.com" target="_blank">chenm003@163.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT:1ex;MARGIN:0px 0px 0px 0.8ex;BORDER-LEFT:#ccc 1px solid"># HG changeset patch<br># User Min Chen <<a href="mailto:chenm003@163.com" target="_blank">chenm003@163.com</a>><br># Date 1440632250 25200<br># Node ID be9fbc8bf0d5e57949367293035d047d6a7d9da8<br># Parent  d8091487bc9749e702c468786b0cd9e663478a91<br>improve motionEstimate() by bypass reduce MV Candidate<br>---<br> source/common/mv.h        |    2 ++<br> source/encoder/motion.cpp |   11 ++++++++++-<br> 2 files changed, 12 insertions(+), 1 deletions(-)<br><br>diff -r d8091487bc97 -r be9fbc8bf0d5 source/common/mv.h<br>--- a/source/common/mv.h        Tue Aug 25 16:39:12 2015 -0700<br>+++ b/source/common/mv.h        Wed Aug 26 16:37:30 2015 -0700<br>@@ -79,6 +79,8 @@<br><br>     bool operator !() const                    { return !word; }<br><br>+    MV operator ~() const                    { return ~word; }<br>+<br>     // Scale down a QPEL mv to FPEL mv, rounding up by one HPEL offset<br>     MV roundToFPel() const                     { return MV((x + 2) >> 2, (y + 2) >> 2); }<br><br>diff -r d8091487bc97 -r be9fbc8bf0d5 source/encoder/motion.cpp<br>--- a/source/encoder/motion.cpp Tue Aug 25 16:39:12 2015 -0700<br>+++ b/source/encoder/motion.cpp Wed Aug 26 16:37:30 2015 -0700<br>@@ -621,10 +621,19 @@<br>         }<br>     }<br><br>-    X265_CHECK(!(ref->isLowres && numCandidates), "lowres motion candidates not allowed\n")<br>+    X265_CHECK(!(ref->isLowres && numCandidates), "lowres motion candidates not allowed\n");<br>+<br>     // measure SAD cost at each QPEL motion vector candidate<br>+    MV prevMV;<br>+    if (numCandidates)<br>+        prevMV = ~mvc[0];<br>     for (int i = 0; i < numCandidates; i++)<br>     {<br>+        // Bypass duplicated mvc, it isn't a good way but simplest. Prepare to sort input mvc list will give us less candidate<br>+        if (prevMV == mvc[i])<br>+            continue;<br>+        prevMV = mvc[i];<br>+<br>         MV m = mvc[i].clipped(qmvmin, qmvmax);<br>         if (m.notZero() & (m != pmv ? 1 : 0) & (m != bestpre ? 1 : 0)) // check already measured<br>         {<br><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><br></blockquote></div><br></div></blockquote></div></div></div><br>_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">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><br>
<br></blockquote></div><br></div>