avcodec/mpegvideo: Fix off-by-one error when decoding >8 bit MPEG-4

Fixes visual corruptions on two macroblocks from two frames from
https://samples.ffmpeg.org/ffmpeg-bugs/trac/ticket4447/A003C003_SR_422_23.98p.mxf

Reviewed-by: Kieran Kunhya <kierank@obe.tv>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt 2022-01-26 00:22:50 +01:00
parent 83c1ac6570
commit 9953fc9a23
1 changed files with 2 additions and 2 deletions

View File

@ -1648,8 +1648,8 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64],
int vsub = i ? s->chroma_y_shift : 0;
int hsub = i ? s->chroma_x_shift : 0;
dest_pcm[i] += (linesize[i] / 2) * ((16 >> vsub) - 1);
for(h = (16 >> vsub)-1; h >= 1; h--){
for(w = (16 >> hsub)-1; w >= 1; w--)
for (h = (16 >> vsub) - 1; h >= 0; h--) {
for (w = (16 >> hsub) - 1; w >= 0; w--)
dest_pcm[i][w] = (*s->dpcm_macroblock)[i][idx++];
dest_pcm[i] -= linesize[i] / 2;
}