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 | int ref_pic_elist = refPicList[elist].list[TAB_MVF(x, y).ref_idx[elist]]; | 568 | int ref_pic_elist = refPicList[elist].list[TAB_MVF(x, y).ref_idx[elist]]; |
| 569 | int ref_pic_curr = refPicList[ref_idx_curr].list[ref_idx]; | 569 | int ref_pic_curr = refPicList[ref_idx_curr].list[ref_idx]; |
| 570 | 570 | ||
| 571 | if (ref_pic_elist != ref_pic_curr) | 571 | if (ref_pic_elist != ref_pic_curr) { |
| 572 | mv_scale(mv, mv, s->poc - ref_pic_elist, s->poc - 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 | static int mv_mp_mode_mx(HEVCContext *s, int x, int y, int pred_flag_index, | 579 | static int mv_mp_mode_mx(HEVCContext *s, int x, int y, int pred_flag_index, |