From 623184afa218fbe3cc506cffb1aaa4e3940c3630 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 10 Dec 2012 23:20:47 +0100 Subject: [PATCH] itu H.263: Fix handling of PB blocks This fixes artifacts in Ticket744 Signed-off-by: Michael Niedermayer --- libavcodec/ituh263dec.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/ituh263dec.c b/libavcodec/ituh263dec.c index 6c95636ab8..44b13aa5ed 100644 --- a/libavcodec/ituh263dec.c +++ b/libavcodec/ituh263dec.c @@ -566,11 +566,13 @@ static int h263_skip_b_part(MpegEncContext *s, int cbp) { LOCAL_ALIGNED_16(DCTELEM, dblock, [64]); int i, mbi; + int bli[6]; /* we have to set s->mb_intra to zero to decode B-part of PB-frame correctly * but real value should be restored in order to be used later (in OBMC condition) */ mbi = s->mb_intra; + memcpy(bli, s->block_last_index, sizeof(bli)); s->mb_intra = 0; for (i = 0; i < 6; i++) { if (h263_decode_block(s, dblock, i, cbp&32) < 0) @@ -578,6 +580,7 @@ static int h263_skip_b_part(MpegEncContext *s, int cbp) cbp+=cbp; } s->mb_intra = mbi; + memcpy(s->block_last_index, bli, sizeof(bli)); return 0; }