@@ -279,7 +279,8 @@ void PlaneOfBlocks::SearchMVs(
279279 SearchType st, int stp, int lambda, sad_t lsad, int pnew,
280280 int plevel, int flags, sad_t *out, const VECTOR * globalMVec,
281281 short *outfilebuf, int fieldShift, sad_t * pmeanLumaChange,
282- int divideExtra, int _pzero, int _pglobal, sad_t _badSAD, int _badrange, bool meander, int *vecPrev, bool _tryMany
282+ int divideExtra, int _pzero, int _pglobal, sad_t _badSAD, int _badrange, bool meander, int *vecPrev, bool _tryMany,
283+ int optPredictorType
283284)
284285{
285286 // - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -371,9 +372,10 @@ void PlaneOfBlocks::SearchMVs(
371372 _out = out;
372373 _outfilebuf = outfilebuf;
373374 _vecPrev = vecPrev;
374- _meander_flag = meander;
375+ _meander_flag = meander;
375376 _pnew = pnew;
376- _lsad = lsad;
377+ _lsad = lsad;
378+ _predictorType = optPredictorType; // v2.7.46
377379
378380 // - - - - - - - - - - - - - - - - - - - - - - - - -
379381
@@ -402,7 +404,8 @@ void PlaneOfBlocks::RecalculateMVs(
402404 MVClip & mvClip, MVFrame *_pSrcFrame, MVFrame *_pRefFrame,
403405 SearchType st, int stp, int lambda, sad_t lsad, int pnew,
404406 int flags, int *out,
405- short *outfilebuf, int fieldShift, sad_t thSAD, int divideExtra, int smooth, bool meander
407+ short *outfilebuf, int fieldShift, sad_t thSAD, int divideExtra, int smooth, bool meander,
408+ int optPredictorType
406409)
407410{
408411 // - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -480,7 +483,8 @@ void PlaneOfBlocks::RecalculateMVs(
480483
481484 _out = out;
482485 _outfilebuf = outfilebuf;
483- _meander_flag = meander;
486+ _meander_flag = meander;
487+ _predictorType = optPredictorType; // 2.7.46
484488 _pnew = pnew;
485489 _lsad = lsad;
486490 _mv_clip_ptr = &mvClip;
@@ -1165,7 +1169,7 @@ void PlaneOfBlocks::PseudoEPZSearch_no_pred(WorkingArea& workarea)
11651169 workarea.planeSAD += workarea.bestMV .sad ; // for debug, plus fixme outer planeSAD is not used
11661170}
11671171
1168- // DTS test
1172+ // DTL test
11691173template <typename pixel_t >
11701174void PlaneOfBlocks::PseudoEPZSearch_glob_med_pred (WorkingArea& workarea)
11711175{
@@ -3197,11 +3201,14 @@ void PlaneOfBlocks::search_mv_slice(Slicer::TaskData &td)
31973201 workarea.predictors [4 ] = ClipMV (workarea, zeroMV);
31983202 }
31993203
3200- // Possible point of placement selection of 'predictors control'
3201- PseudoEPZSearch<pixel_t >(workarea); // all predictors (original)
3202- // DTL additions
3203- // PseudoEPZSearch_glob_med_pred<pixel_t>(workarea); // partial predictors
3204- // PseudoEPZSearch_no_pred<pixel_t>(workarea); // no predictiors
3204+ // Possible point of placement selection of 'predictors control'
3205+ if (_predictorType == 0 )
3206+ PseudoEPZSearch<pixel_t >(workarea); // all predictors (original)
3207+ else if (_predictorType == 1 ) // DTL: partial predictors
3208+ PseudoEPZSearch_glob_med_pred<pixel_t >(workarea);
3209+ else // if (_predictorType == 2) // DTL: no predictiors
3210+ PseudoEPZSearch_no_pred<pixel_t >(workarea);
3211+
32053212 // workarea.bestMV = zeroMV; // debug
32063213
32073214 if (outfilebuf != NULL ) // write vector to outfile
0 commit comments