Mercurial > libavcodec.hg
diff mpegvideo.c @ 248:56ee684c48bb libavcodec
- H.263+ decoder support for Advanded INTRA Coding (buggy)
author | pulento |
---|---|
date | Mon, 18 Feb 2002 19:33:27 +0000 |
parents | 3860331a1ecb |
children | 42a0b7b16738 |
line wrap: on
line diff
--- a/mpegvideo.c Mon Feb 18 09:40:05 2002 +0000 +++ b/mpegvideo.c Mon Feb 18 19:33:27 2002 +0000 @@ -181,7 +181,7 @@ memset(s->motion_val, 0, size * 2 * sizeof(INT16)); } - if (s->h263_pred) { + if (s->h263_pred || s->h263_plus) { int y_size, c_size, i, size; /* dc values */ @@ -1062,10 +1062,20 @@ sub_pixels_2(s->block[5], ptr, s->linesize >> 1, dxy); } emms_c(); - //if (s->avg_mb_var) - // printf("\nqscale=%2d dquant=%2d var=%4d avgvar=%4d", s->qscale, - // s->qscale*(s->mb_var[s->mb_width*mb_y+mb_x]/s->avg_mb_var), - // s->mb_var[s->mb_width*mb_y+mb_x], s->avg_mb_var); + +#if 0 + { + float adap_parm; + + adap_parm = ((s->avg_mb_var << 1) + s->mb_var[s->mb_width*mb_y+mb_x] + 1.0) / + ((s->mb_var[s->mb_width*mb_y+mb_x] << 1) + s->avg_mb_var + 1.0); + + printf("\ntype=%c qscale=%2d adap=%0.2f dquant=%4.2f var=%4d avgvar=%4d", + (s->mb_type[s->mb_width*mb_y+mb_x] > 0) ? 'I' : 'P', + s->qscale, adap_parm, s->qscale*adap_parm, + s->mb_var[s->mb_width*mb_y+mb_x], s->avg_mb_var); + } +#endif /* DCT & quantize */ if (s->h263_msmpeg4) { msmpeg4_dc_scale(s); @@ -1331,7 +1341,10 @@ } qmul = s->qscale << 1; - qadd = (s->qscale - 1) | 1; + if (s->h263_aic && s->mb_intra) + qadd = 0; + else + qadd = (s->qscale - 1) | 1; for(;i<nCoeffs;i++) { level = block[i]; @@ -1407,12 +1420,13 @@ q = 31; qscale = (int)(q + 0.5); #if defined(DEBUG) - printf("%d: total=%0.0f br=%0.1f diff=%d qest=%0.1f\n", + printf("\n%d: total=%0.0f wanted=%0.0f br=%0.1f diff=%d qest=%2.1f\n", s->picture_number, (double)total_bits, + (double)s->wanted_bits, (float)s->frame_rate / FRAME_RATE_BASE * total_bits / s->picture_number, - diff, q); + (int)diff, q); #endif return qscale; }