Here is the patch suggested by: unkaggregate, users sf net
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 9 Jul 2005 21:39:29 +0000 (21:39 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 9 Jul 2005 21:39:29 +0000 (21:39 +0000)
Main reason is: deltas in interframes need scaling by 3/4 before applying.
Detailed description is at:
http://sourceforge.net/tracker/index.php?func=detail&aid=1222099&group_id=16082&atid=116082
He also mentioned some samples at:
http://www.nerdgrounds.com/indeo21_test/
patch posted to ffmpeg-devel by (Kostya: kostya shishkov, gmail com)

Originally committed as revision 4425 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/indeo2.c

index 25561ec..5063117 100644 (file)
@@ -118,11 +118,11 @@ static int ir2_decode_plane_inter(Ir2Context *ctx, int width, int height, uint8_
                 c -= 0x7F;
                 out += c * 2;
             } else { /* add two deltas from table */
-                t = dst[out] + (table[c * 2] - 128);
+                t = dst[out] + (((table[c * 2] - 128)*3) >> 2);
                 t= clip_uint8(t);
                 dst[out] = t;
                 out++;
-                t = dst[out] + (table[(c * 2) + 1] - 128);
+                t = dst[out] + (((table[(c * 2) + 1] - 128)*3) >> 2);
                 t= clip_uint8(t);
                 dst[out] = t;
                 out++;