summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2004-05-31 00:42:55 +0000
committerMichael Niedermayer <michaelni@gmx.at>2004-05-31 00:42:55 +0000
commitbb8140f29da7f8dd62dd238a008eef027ef00b17 (patch)
tree72671838b551f2a6fbf20b7df82565207d693dbf
parentb658ecfeb81184f12cb3d990858705178344a1e9 (diff)
h261 dequant fix
Originally committed as revision 3180 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/mpegvideo.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index e0b5d0ec6e..4bc15ef2fa 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -5800,7 +5800,7 @@ static void dct_unquantize_h263_inter_c(MpegEncContext *s,
static void dct_unquantize_h261_intra_c(MpegEncContext *s,
DCTELEM *block, int n, int qscale)
{
- int i, level, odd;
+ int i, level, even;
int nCoeffs;
assert(s->block_last_index[n]>=0);
@@ -5809,16 +5809,16 @@ static void dct_unquantize_h261_intra_c(MpegEncContext *s,
block[0] = block[0] * s->y_dc_scale;
else
block[0] = block[0] * s->c_dc_scale;
- odd = qscale & 0x1;
+ even = (qscale & 1)^1;
nCoeffs= s->inter_scantable.raster_end[ s->block_last_index[n] ];
for(i=1; i<=nCoeffs; i++){
level = block[i];
if (level){
if (level < 0){
- level = qscale * ((level << 1) - 1) + (~odd);
+ level = qscale * ((level << 1) - 1) + even;
}else{
- level = qscale * ((level << 1) + 1) - (~odd);
+ level = qscale * ((level << 1) + 1) - even;
}
}
block[i] = level;
@@ -5828,12 +5828,12 @@ static void dct_unquantize_h261_intra_c(MpegEncContext *s,
static void dct_unquantize_h261_inter_c(MpegEncContext *s,
DCTELEM *block, int n, int qscale)
{
- int i, level, odd;
+ int i, level, even;
int nCoeffs;
assert(s->block_last_index[n]>=0);
-
- odd = qscale & 0x1;
+
+ even = (qscale & 1)^1;
nCoeffs= s->inter_scantable.raster_end[ s->block_last_index[n] ];
@@ -5841,9 +5841,9 @@ static void dct_unquantize_h261_inter_c(MpegEncContext *s,
level = block[i];
if (level){
if (level < 0){
- level = qscale * ((level << 1) - 1) + (~odd);
+ level = qscale * ((level << 1) - 1) + even;
}else{
- level = qscale * ((level << 1) + 1) - (~odd);
+ level = qscale * ((level << 1) + 1) - even;
}
}
block[i] = level;