aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuanjo <pulento@users.sourceforge.net>2002-02-22 03:35:41 +0000
committerJuanjo <pulento@users.sourceforge.net>2002-02-22 03:35:41 +0000
commite7774f11acfe50d6f4db1e8456334746aef80864 (patch)
tree72ef41c528fdbacd962ded152a1f5d14a4ba4215
parent2ba1bff05909fee700cc4b97a9eaaa68b58d880f (diff)
downloadffmpeg-e7774f11acfe50d6f4db1e8456334746aef80864.tar.gz
- Bug fix on RTYPE (rounding type) not being honoured by H.263+ decoder.
Originally committed as revision 312 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/h263.c5
-rw-r--r--libavcodec/i386/mpegvideo_mmx.c22
2 files changed, 15 insertions, 12 deletions
diff --git a/libavcodec/h263.c b/libavcodec/h263.c
index 9e68549cd6..fb6b2e7650 100644
--- a/libavcodec/h263.c
+++ b/libavcodec/h263.c
@@ -1447,7 +1447,10 @@ int h263_decode_picture_header(MpegEncContext *s)
if (s->pict_type != I_TYPE &&
s->pict_type != P_TYPE)
return -1;
- skip_bits(&s->gb, 7);
+ skip_bits(&s->gb, 2);
+ s->no_rounding = get_bits1(&s->gb);
+ //fprintf(stderr, "\nRTYPE: %d", s->no_rounding);
+ skip_bits(&s->gb, 4);
/* Get the picture dimensions */
if (ufep) {
diff --git a/libavcodec/i386/mpegvideo_mmx.c b/libavcodec/i386/mpegvideo_mmx.c
index 0a4e3d12e7..017e3d4881 100644
--- a/libavcodec/i386/mpegvideo_mmx.c
+++ b/libavcodec/i386/mpegvideo_mmx.c
@@ -95,17 +95,17 @@ static void dct_unquantize_h263_mmx(MpegEncContext *s,
else
block[0] = block[0] * s->c_dc_scale;
}
- for(i=1; i<8; i++) {
- level = block[i];
- if (level) {
- if (level < 0) {
- level = level * qmul - qadd;
- } else {
- level = level * qmul + qadd;
- }
- block[i] = level;
- }
- }
+ for(i=1; i<8; i++) {
+ level = block[i];
+ if (level) {
+ if (level < 0) {
+ level = level * qmul - qadd;
+ } else {
+ level = level * qmul + qadd;
+ }
+ block[i] = level;
+ }
+ }
nCoeffs=64;
} else {
i = 0;