Set C predictor to zero if unavailable (should fix B-frame border artifacts)

Originally committed as revision 8702 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Kostya Shishkov 18 years ago
parent c4a7b86100
commit 44942d52b6
  1. 2
      libavcodec/vc1.c

@ -2318,6 +2318,7 @@ static inline void vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], int
off = (s->mb_x == (s->mb_width - 1)) ? -2 : 2; off = (s->mb_x == (s->mb_width - 1)) ? -2 : 2;
B = s->current_picture.motion_val[0][xy - wrap*2 + off]; B = s->current_picture.motion_val[0][xy - wrap*2 + off];
if(!s->mb_x) C[0] = C[1] = 0;
if(!s->first_slice_line) { // predictor A is not out of bounds if(!s->first_slice_line) { // predictor A is not out of bounds
if(s->mb_width == 1) { if(s->mb_width == 1) {
px = A[0]; px = A[0];
@ -2395,6 +2396,7 @@ static inline void vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], int
off = (s->mb_x == (s->mb_width - 1)) ? -2 : 2; off = (s->mb_x == (s->mb_width - 1)) ? -2 : 2;
B = s->current_picture.motion_val[1][xy - wrap*2 + off]; B = s->current_picture.motion_val[1][xy - wrap*2 + off];
if(!s->mb_x) C[0] = C[1] = 0;
if(!s->first_slice_line) { // predictor A is not out of bounds if(!s->first_slice_line) { // predictor A is not out of bounds
if(s->mb_width == 1) { if(s->mb_width == 1) {
px = A[0]; px = A[0];

Loading…
Cancel
Save