[FFmpeg-devel] [PATCH] avcodec/vc1_pred: properly clip interlaced motion vectors
Carl Eugen Hoyos
ceffmpeg at gmail.com
Sat Apr 21 22:50:18 EEST 2018
2018-04-21 21:05 GMT+02:00, Jerome Borsboom <jerome.borsboom at carpalis.nl>:
>> Fixes #2557.
>>
>> Signed-off-by: Paul B Mahol <onemda at gmail.com>
>> ---
>> libavcodec/vc1_pred.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/libavcodec/vc1_pred.c b/libavcodec/vc1_pred.c
>> index 54712f6b7a..9f42a930fe 100644
>> --- a/libavcodec/vc1_pred.c
>> +++ b/libavcodec/vc1_pred.c
>> @@ -98,9 +98,9 @@ static av_always_inline int scaleforsame_y(VC1Context
>> *v, int i, int n /* MV */,
>> }
>>
>> if (v->cur_field_type && !v->ref_field_type[dir])
>> - return av_clip(scaledvalue, -v->range_y / 2 + 1, v->range_y / 2);
>> + return av_clip(scaledvalue, -v->range_y / 2 - 1, v->range_y / 2);
>> else
>> - return av_clip(scaledvalue, -v->range_y / 2, v->range_y / 2 - 1);
>> + return av_clip(scaledvalue, -v->range_y / 2, v->range_y / 2 + 1);
>> }
>>
>> static av_always_inline int scaleforopp_x(VC1Context *v, int n /* MV */)
>> --
>> 2.11.0
>
> scaleforsame_y references ref_field_type. Therefore, it needs to be set
> before scaleforsame is called.
Please mention ticket #2557 in the commit message.
> Signed-off-by: Jerome Borsboom <jerome.borsboom at carpalis.nl>
> ---
> I am not sure your patch is correct. The existing implementation agrees with
> VC-1 spec.
> See Figure 119 in 10.3.5.4.3.4.2 in particular. Please have a look if the
> patch below solves
> the issue. ref_field_type is referenced in scaleforsame_y and needs to be
> set earlier in
> ff_vc1_pred_mv to have the desired effect.
This patch also fixes the issue for the given sample
Carl Eugen
More information about the ffmpeg-devel
mailing list