[FFmpeg-cvslog] itu H.263: Fix handling of PB blocks

Michael Niedermayer git at videolan.org
Mon Dec 10 23:42:52 CET 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Dec 10 23:20:47 2012 +0100| [623184afa218fbe3cc506cffb1aaa4e3940c3630] | committer: Michael Niedermayer

itu H.263: Fix handling of PB blocks

This fixes artifacts in Ticket744

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=623184afa218fbe3cc506cffb1aaa4e3940c3630
---

 libavcodec/ituh263dec.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/ituh263dec.c b/libavcodec/ituh263dec.c
index 6c95636..44b13aa 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;
 }
 



More information about the ffmpeg-cvslog mailing list