• Nekopanda's avatar
    avcodec/mpeg2dec: Fix motion vector rounding for chroma components · f4d5d7e8
    Nekopanda authored
    In 16x8 motion compensation, for lower 16x8 region, the input to mpeg_motion() for motion_y was "motion_y + 16", which causes wrong rounding. For 4:2:0, chroma scaling for y is dividing by two and rounding toward zero. When motion_y < 0 and motion_y + 16 > 0, the rounding direction of "motion_y" and "motion_y + 16" is different and rounding "motion_y + 16" would be incorrect.
    
    We should input "motion_y" as is to round correctly. I add "is_16x8" flag to do that.
    Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
    f4d5d7e8
mpegvideo_motion.c 37.7 KB