Pushed to Release_3.2 and grafted the fix to default. On Thu, Oct 24, 2019 at 4:17 PM <[email protected]> wrote:
> # HG changeset patch > # User Pooja Venkatesan <[email protected]> > # Date 1571755477 -19800 > # Tue Oct 22 20:14:37 2019 +0530 > # Branch Release_3.2 > # Node ID 7fa570ead8d361bf6055cd2a881a8e15f12110ae > # Parent a3a088a7262fcc02560bc8b71d0a3cf5b9c69fe3 > Fix output change in analysis load > > diff -r a3a088a7262f -r 7fa570ead8d3 source/encoder/search.cpp > --- a/source/encoder/search.cpp Mon Oct 14 14:33:16 2019 +0530 > +++ b/source/encoder/search.cpp Tue Oct 22 20:14:37 2019 +0530 > @@ -2156,14 +2156,17 @@ > { > CUData& cu = interMode.cu; > MV mv, mvmin, mvmax; > - cu.clipMv(mv); > int cand = 0, bestcost = INT_MAX; > - do > + while (cand < m_param->mvRefine) > { > - if (cand && (mvp[cand] == mvp[cand - 1] || (cand == 2 && > mvp[cand] == mvp[cand - 2]))) > + if ((cand && mvp[cand] == mvp[cand - 1]) || (cand == 2 && > (mvp[cand] == mvp[cand - 2] || mvp[cand] == mvp[cand - 1]))) > + { > + cand++; > continue; > + } > MV bestMV; > - mv = mvp[cand]; > + mv = mvp[cand++]; > + cu.clipMv(mv); > setSearchRange(cu, mv, m_param->searchRange, mvmin, mvmax); > int cost = m_me.motionEstimate(&m_slice->m_mref[list][ref], > mvmin, mvmax, mv, numMvc, mvc, m_param->searchRange, bestMV, > m_param->maxSlices, > m_param->bSourceReferenceEstimation ? > m_slice->m_refFrameList[list][ref]->m_fencPic->getLumaAddr(0) : 0); > @@ -2172,7 +2175,7 @@ > bestcost = cost; > outmv = bestMV; > } > - }while (++cand < m_param->mvRefine); > + } > } > /* find the best inter prediction for each PU of specified mode */ > void Search::predInterSearch(Mode& interMode, const CUGeom& cuGeom, bool > bChromaMC, uint32_t refMasks[2]) > @@ -2246,7 +2249,13 @@ > const MV* amvp = interMode.amvpCand[list][ref]; > int mvpIdx = selectMVP(cu, pu, amvp, list, ref); > MV mvmin, mvmax, outmv, mvp; > - mvp = amvp[mvpIdx]; > + if (useAsMVP) > + { > + mvp = interDataCTU->mv[list][cuIdx + puIdx].word; > + mvpIdx = interDataCTU->mvpIdx[list][cuIdx + puIdx]; > + } > + else > + mvp = amvp[mvpIdx]; > if (m_param->searchMethod == X265_SEA) > { > int puX = puIdx & 1; > @@ -2259,28 +2268,26 @@ > int satdCost; > if (m_param->analysisMultiPassRefine && > m_param->rc.bStatRead && mvpIdx == bestME[list].mvpIdx) > mvpIn = bestME[list].mv; > - if (useAsMVP) > + if (useAsMVP && m_param->mvRefine > 1) > { > MV bestmv, mvpSel[3]; > int mvpIdxSel[3]; > satdCost = m_me.COST_MAX; > - mvpSel[0] = interDataCTU->mv[list][cuIdx + > puIdx].word; > - mvpIdxSel[0] = interDataCTU->mvpIdx[list][cuIdx + > puIdx]; > - if (m_param->mvRefine > 1) > + mvpSel[0] = mvp; > + mvpIdxSel[0] = mvpIdx; > + mvpIdx = selectMVP(cu, pu, amvp, list, ref); > + mvpSel[1] = interMode.amvpCand[list][ref][mvpIdx]; > + mvpIdxSel[1] = mvpIdx; > + if (m_param->mvRefine > 2) > { > - mvpSel[1] = interMode.amvpCand[list][ref][mvpIdx]; > - mvpIdxSel[1] = mvpIdx; > - if (m_param->mvRefine > 2) > - { > - mvpSel[2] = > interMode.amvpCand[list][ref][!mvpIdx]; > - mvpIdxSel[2] = !mvpIdx; > - } > + mvpSel[2] = > interMode.amvpCand[list][ref][!mvpIdx]; > + mvpIdxSel[2] = !mvpIdx; > } > for (int cand = 0; cand < m_param->mvRefine; cand++) > { > if (cand && (mvpSel[cand] == mvpSel[cand - 1] || > (cand == 2 && mvpSel[cand] == mvpSel[cand - 2]))) > continue; > - setSearchRange(cu, mvp, m_param->searchRange, > mvmin, mvmax); > + setSearchRange(cu, mvpSel[cand], > m_param->searchRange, mvmin, mvmax); > int bcost = > m_me.motionEstimate(&m_slice->m_mref[list][ref], mvmin, mvmax, > mvpSel[cand], numMvc, mvc, m_param->searchRange, bestmv, m_param->maxSlices, > m_param->bSourceReferenceEstimation ? > m_slice->m_refFrameList[list][ref]->m_fencPic->getLumaAddr(0) : 0); > if (satdCost > bcost) > @@ -2291,6 +2298,7 @@ > mvpIdx = mvpIdxSel[cand]; > } > } > + mvpIn = mvp; > } > else > { > _______________________________________________ > x265-devel mailing list > [email protected] > https://mailman.videolan.org/listinfo/x265-devel > -- Regards, Aruna
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
