It was done only in check_mvset(), while mv_scale() is called also by dist_scale().
Unified · Split
| @@ -568,8 +568,12 @@ static av_always_inline void dist_scale(HEVCContext *s, Mv *mv, · 567 unmodified lines | ||
| 568 | 568 | int ref_pic_elist = refPicList[elist].list[TAB_MVF(x, y).ref_idx[elist]]; |
| 569 | 569 | int ref_pic_curr = refPicList[ref_idx_curr].list[ref_idx]; |
| 570 | 570 | |
| 571 | − if (ref_pic_elist != ref_pic_curr) | |
| 572 | − mv_scale(mv, mv, s->poc - ref_pic_elist, s->poc - ref_pic_curr); | |
| 571 | + if (ref_pic_elist != ref_pic_curr) { | |
| 572 | + int poc_diff = s->poc - ref_pic_elist; | |
| 573 | + if (!poc_diff) | |
| 574 | + poc_diff = 1; | |
| 575 | + mv_scale(mv, mv, poc_diff, s->poc - ref_pic_curr); | |
| 576 | + } | |
| 573 | 577 | } |
| 574 | 578 | |
| 575 | 579 | static int mv_mp_mode_mx(HEVCContext *s, int x, int y, int pred_flag_index, |