[libav-stable] hevc: Conceal zero td

Luca Barbato git at libav.org
Sun Feb 9 19:53:51 CET 2014


Module: libav
Branch: master
Commit: 246d3bf0ec93dd21069f9352ed4909aec334cd4d

Author:    Luca Barbato <lu_zero at gentoo.org>
Committer: Luca Barbato <lu_zero at gentoo.org>
Date:      Sat Feb  8 06:10:27 2014 +0100

hevc: Conceal zero td

It was done only in check_mvset(), while mv_scale() is called also by
dist_scale().

Sample-Id: 00001579-google
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable at libav.org

---

 libavcodec/hevc_mvs.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/libavcodec/hevc_mvs.c b/libavcodec/hevc_mvs.c
index 49d5ff2..2fe4dbb 100644
--- a/libavcodec/hevc_mvs.c
+++ b/libavcodec/hevc_mvs.c
@@ -568,8 +568,12 @@ static av_always_inline void dist_scale(HEVCContext *s, Mv *mv,
     int ref_pic_elist      = refPicList[elist].list[TAB_MVF(x, y).ref_idx[elist]];
     int ref_pic_curr       = refPicList[ref_idx_curr].list[ref_idx];
 
-    if (ref_pic_elist != ref_pic_curr)
-        mv_scale(mv, mv, s->poc - ref_pic_elist, s->poc - ref_pic_curr);
+    if (ref_pic_elist != ref_pic_curr) {
+        int poc_diff = s->poc - ref_pic_elist;
+        if (!poc_diff)
+            poc_diff = 1;
+        mv_scale(mv, mv, poc_diff, s->poc - ref_pic_curr);
+    }
 }
 
 static int mv_mp_mode_mx(HEVCContext *s, int x, int y, int pred_flag_index,



More information about the libav-stable mailing list