diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2004-05-31 00:42:55 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2004-05-31 00:42:55 +0000 |
commit | bb8140f29da7f8dd62dd238a008eef027ef00b17 (patch) | |
tree | 72671838b551f2a6fbf20b7df82565207d693dbf | |
parent | b658ecfeb81184f12cb3d990858705178344a1e9 (diff) | |
download | ffmpeg-bb8140f29da7f8dd62dd238a008eef027ef00b17.tar.gz |
h261 dequant fix
Originally committed as revision 3180 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/mpegvideo.c | 18 |
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; |