|
|
|
@ -719,19 +719,19 @@ void ff_vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], |
|
|
|
|
s->cur_pic.motion_val[1][xy][1] = 0; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (direct && s->next_pic.ptr->field_picture) |
|
|
|
|
av_log(s->avctx, AV_LOG_WARNING, "Mixed frame/field direct mode not supported\n"); |
|
|
|
|
|
|
|
|
|
s->mv[0][0][0] = scale_mv(s->next_pic.motion_val[1][xy][0], v->bfraction, 0, s->quarter_sample); |
|
|
|
|
s->mv[0][0][1] = scale_mv(s->next_pic.motion_val[1][xy][1], v->bfraction, 0, s->quarter_sample); |
|
|
|
|
s->mv[1][0][0] = scale_mv(s->next_pic.motion_val[1][xy][0], v->bfraction, 1, s->quarter_sample); |
|
|
|
|
s->mv[1][0][1] = scale_mv(s->next_pic.motion_val[1][xy][1], v->bfraction, 1, s->quarter_sample); |
|
|
|
|
|
|
|
|
|
/* Pullback predicted motion vectors as specified in 8.4.5.4 */ |
|
|
|
|
s->mv[0][0][0] = av_clip(s->mv[0][0][0], -60 - (s->mb_x << 6), (s->mb_width << 6) - 4 - (s->mb_x << 6)); |
|
|
|
|
s->mv[0][0][1] = av_clip(s->mv[0][0][1], -60 - (s->mb_y << 6), (s->mb_height << 6) - 4 - (s->mb_y << 6)); |
|
|
|
|
s->mv[1][0][0] = av_clip(s->mv[1][0][0], -60 - (s->mb_x << 6), (s->mb_width << 6) - 4 - (s->mb_x << 6)); |
|
|
|
|
s->mv[1][0][1] = av_clip(s->mv[1][0][1], -60 - (s->mb_y << 6), (s->mb_height << 6) - 4 - (s->mb_y << 6)); |
|
|
|
|
if (direct && s->next_pic.ptr->field_picture) |
|
|
|
|
av_log(s->avctx, AV_LOG_WARNING, "Mixed frame/field direct mode not supported\n"); |
|
|
|
|
|
|
|
|
|
s->mv[0][0][0] = scale_mv(s->next_pic.motion_val[1][xy][0], v->bfraction, 0, s->quarter_sample); |
|
|
|
|
s->mv[0][0][1] = scale_mv(s->next_pic.motion_val[1][xy][1], v->bfraction, 0, s->quarter_sample); |
|
|
|
|
s->mv[1][0][0] = scale_mv(s->next_pic.motion_val[1][xy][0], v->bfraction, 1, s->quarter_sample); |
|
|
|
|
s->mv[1][0][1] = scale_mv(s->next_pic.motion_val[1][xy][1], v->bfraction, 1, s->quarter_sample); |
|
|
|
|
|
|
|
|
|
/* Pullback predicted motion vectors as specified in 8.4.5.4 */ |
|
|
|
|
s->mv[0][0][0] = av_clip(s->mv[0][0][0], -60 - (s->mb_x << 6), (s->mb_width << 6) - 4 - (s->mb_x << 6)); |
|
|
|
|
s->mv[0][0][1] = av_clip(s->mv[0][0][1], -60 - (s->mb_y << 6), (s->mb_height << 6) - 4 - (s->mb_y << 6)); |
|
|
|
|
s->mv[1][0][0] = av_clip(s->mv[1][0][0], -60 - (s->mb_x << 6), (s->mb_width << 6) - 4 - (s->mb_x << 6)); |
|
|
|
|
s->mv[1][0][1] = av_clip(s->mv[1][0][1], -60 - (s->mb_y << 6), (s->mb_height << 6) - 4 - (s->mb_y << 6)); |
|
|
|
|
if (direct) { |
|
|
|
|
s->cur_pic.motion_val[0][xy][0] = s->mv[0][0][0]; |
|
|
|
|
s->cur_pic.motion_val[0][xy][1] = s->mv[0][0][1]; |
|
|
|
|