diff --git a/libavcodec/motion_est.c b/libavcodec/motion_est.c index c4512a91dd..2aa89786a1 100644 --- a/libavcodec/motion_est.c +++ b/libavcodec/motion_est.c @@ -1290,28 +1290,26 @@ static int ff_estimate_motion_b(MpegEncContext * s, break; case ME_X1: case ME_EPZS: - { - P_LEFT[0] = mv_table[mot_xy - 1][0]; - P_LEFT[1] = mv_table[mot_xy - 1][1]; - - if(P_LEFT[0] > (c->xmax<xmax<first_slice_line) { - P_TOP[0] = mv_table[mot_xy - mot_stride ][0]; - P_TOP[1] = mv_table[mot_xy - mot_stride ][1]; - P_TOPRIGHT[0] = mv_table[mot_xy - mot_stride + 1 ][0]; - P_TOPRIGHT[1] = mv_table[mot_xy - mot_stride + 1 ][1]; - if(P_TOP[1] > (c->ymax<ymax<xmin<xmin< (c->ymax<ymax< (c->xmax << shift)) P_LEFT[0] = (c->xmax << shift); - P_MEDIAN[0]= mid_pred(P_LEFT[0], P_TOP[0], P_TOPRIGHT[0]); - P_MEDIAN[1]= mid_pred(P_LEFT[1], P_TOP[1], P_TOPRIGHT[1]); - } - c->pred_x= P_LEFT[0]; - c->pred_y= P_LEFT[1]; + /* special case for first line */ + if (!s->first_slice_line) { + P_TOP[0] = mv_table[mot_xy - mot_stride ][0]; + P_TOP[1] = mv_table[mot_xy - mot_stride ][1]; + P_TOPRIGHT[0] = mv_table[mot_xy - mot_stride + 1][0]; + P_TOPRIGHT[1] = mv_table[mot_xy - mot_stride + 1][1]; + if (P_TOP[1] > (c->ymax << shift)) P_TOP[1] = (c->ymax << shift); + if (P_TOPRIGHT[0] < (c->xmin << shift)) P_TOPRIGHT[0] = (c->xmin << shift); + if (P_TOPRIGHT[1] > (c->ymax << shift)) P_TOPRIGHT[1] = (c->ymax << shift); + + P_MEDIAN[0] = mid_pred(P_LEFT[0], P_TOP[0], P_TOPRIGHT[0]); + P_MEDIAN[1] = mid_pred(P_LEFT[1], P_TOP[1], P_TOPRIGHT[1]); } + c->pred_x = P_LEFT[0]; + c->pred_y = P_LEFT[1]; if(mv_table == s->b_forw_mv_table){ mv_scale= (s->pb_time<<16) / (s->pp_time<>vsub; i++) { switch (step) { case 1: - { for (j = 0; j < (inlink->w >> hsub); j++) outrow[j] = inrow[-j]; - } break; case 2: diff --git a/libswscale/ppc/swscale_altivec.c b/libswscale/ppc/swscale_altivec.c index 87059d9430..13c63e8acb 100644 --- a/libswscale/ppc/swscale_altivec.c +++ b/libswscale/ppc/swscale_altivec.c @@ -99,7 +99,6 @@ yuv2planeX_altivec(const int16_t *filter, int filterSize, const uint8_t *dither, int offset) { register int i, j; - { DECLARE_ALIGNED(16, int, val)[dstW]; for (i=0; i>7, (1<<15)-1); } - } break; case 8: - { for (i=0; i>7, (1<<15)-1); } - } break; case 16: - { for (i=0; i>7, (1<<15)-1); } - } break; default: - { for (i=0; i