OSDN Git Service

fixing some 64bit bugs
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 26 Aug 2002 16:10:41 +0000 (16:10 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 26 Aug 2002 16:10:41 +0000 (16:10 +0000)
Originally committed as revision 867 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/h263.c
libavcodec/mpeg12.c

index 2fd90e9..b8e87b0 100644 (file)
@@ -2900,7 +2900,7 @@ static int h263_decode_block(MpegEncContext * s, DCTELEM * block,
             if (s->h263_rv10 && level == -128) {
                 /* XXX: should patch encoder too */
                 level = get_bits(&s->gb, 12);
-                level = (level << 20) >> 20;
+                level= (level + ((-1)<<11)) ^ ((-1)<<11); //sign extension
             }
         } else {
             run = rl->table_run[code];
index 8939bb6..94915ae 100644 (file)
@@ -1049,7 +1049,7 @@ static int mpeg1_decode_block(MpegEncContext *s,
             /* escape */
             run = get_bits(&s->gb, 6);
             level = get_bits(&s->gb, 8);
-            level = (level << 24) >> 24;
+            level= (level + ((-1)<<7)) ^ ((-1)<<7); //sign extension
             if (level == -128) {
                 level = get_bits(&s->gb, 8) - 256;
             } else if (level == 0) {
@@ -1128,7 +1128,7 @@ static int mpeg2_decode_block_non_intra(MpegEncContext *s,
             /* escape */
             run = get_bits(&s->gb, 6);
             level = get_bits(&s->gb, 12);
-            level = (level << 20) >> 20;
+            level= (level + ((-1)<<11)) ^ ((-1)<<11); //sign extension
         } else {
             run = rl->table_run[code];
             level = rl->table_level[code];
@@ -1211,7 +1211,7 @@ static int mpeg2_decode_block_intra(MpegEncContext *s,
             /* escape */
             run = get_bits(&s->gb, 6);
             level = get_bits(&s->gb, 12);
-            level = (level << 20) >> 20;
+            level= (level + ((-1)<<11)) ^ ((-1)<<11); //sign extension
         } else {
             run = rl->table_run[code];
             level = rl->table_level[code];