From 4dd0e44f140c5570f893dabfac4bb3747e212f90 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 26 Aug 2002 16:10:41 +0000 Subject: [PATCH] fixing some 64bit bugs Originally committed as revision 867 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h263.c | 2 +- libavcodec/mpeg12.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libavcodec/h263.c b/libavcodec/h263.c index 2fd90e9ec..b8e87b019 100644 --- a/libavcodec/h263.c +++ b/libavcodec/h263.c @@ -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]; diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 8939bb6c2..94915ae17 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -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]; -- 2.11.0